Cmdlet di PowerShell per la distribuzione Web
di Owais Shaikh
Distribuzione Web V3.0 include cmdlet di PowerShell per eseguire la maggior parte delle attività supportate dall'API Distribuzione Web [Microsoft.Web.Deployment]. Per altre informazioni su questa API , vedere qui. Questi cmdlet si trovano nello snapin denominato WDeploySnapin3.0, installato e registrato come snapin in un'installazione tipica o successiva della distribuzione Web. Per usare questi cmdlet, aggiungere lo snapin ogni volta che viene avviata la console di PowerShell o aggiungere lo snapin al profilo di PowerShell che renderà tutte le console caricate automaticamente lo snapin.
Per aggiungere quando viene caricata la console di PowerShell, eseguire il comando seguente nella finestra della console:
Add-PSSnapin WDeploySnapin3.0
Per aggiungerlo al profilo di PowerShell:
- Se si ha già un profilo di PowerShell, andare al passaggio 4.
- Creare una cartella WindowsPowerShell in <Documenti> personali.
- Creare un file denominato Microsoft.PowerShell_profile.ps1
- Aggiungere questa riga al file di profilo di PowerShell: 'Add-PSSnapin WDeploySnapin3.0'
Alcuni punti da notare:
- La console di PowerShell viene eseguita a 64 bit nei sistemi a 64 bit ed eseguita in .Net 2.0, ad eccezione di Windows8. Se si verificano problemi a causa di uno o entrambi, vedere la sezione relativa alla risoluzione dei problemi per le soluzioni.
- Tutti i cmdlet che creano un pacchetto Distribuzione Web creano parametri per le attività più comuni e i cmdlet che lo usano accettano i valori dei parametri.
- Esiste un solo cmdlet di rimozione per eliminare un sito o un'app sotto di essa.
- Distribuzione Web include parametri, ma sono ortogonali per i parametri dei cmdlet di PowerShell. Quando i parametri sono indicati in questo documento, implica parametri di cmdlet. I parametri distribuzione Web sono stati specificati in modo specifico come parametri distribuzione Web.
I. Pubblica file Impostazioni
Tutti i cmdlet indicati di seguito hanno la possibilità di eseguire su un artefatto remoto, ad esempio un server remoto o un database remoto. Questi richiedono più di tutte le credenziali. Ad esempio, è necessario il nome del server remoto, il database remoto stringa di connessione, se si vuole consentire la pubblicazione in un server con un certificato di test e così via. Per semplificare l'uso, il trasferimento di informazioni sulle credenziali dall'amministratore del server al consumer e così via. Un nuovo tipo di file ha avuto origine per raggruppare queste impostazioni. Questo file è denominato file delle impostazioni di pubblicazione che termina con estensione publishsettings. Viene usato da Visual Studio per la pubblicazione e da WebMatrix.
Per poter creare un file di questo tipo per l'utilizzo da parte di altri cmdlet e per modificarlo, è possibile usare il cmdlet New-WDPublish Impostazioni . Se non viene specificato alcun nome file, verrà creato un nuovo file nella directory dei documenti con il nome <nuovo guid.publishsettings>. Questo percorso verrà visualizzato al momento della creazione del file. Se viene specificato un nome file e il file non esiste, verrà creato come descritto in precedenza nella cartella specificata dal percorso, tuttavia il percorso del file deve essere valido. Se il file esiste solo i valori per gli attributi specificati durante l'esecuzione del comando verranno modificati, ad eccezione degli attributi nel file sconosciuti e verranno rimossi
Esempio: questo esempio ottiene un oggetto credenziale e lo passa al nuovo cmdlet del file delle impostazioni di pubblicazione insieme ad altri parametri
$cred = Get-Credential
New-WDPublishSettings -ComputerName owais-1 -Site Site1 -Credentials $cred -AllowUntrusted -SiteUrl "https://www.mywebsite.com" -FileName C:\pprofiles\mywebsite.publishsettings -AgentType wmsvc
Get-WDPublishSettings cmdlet allows to load values from a publish setting file into PublishSettings object.
$publishsettings=Get-WDPublishSettings C:\pprofiles\mywebsite.publishsettings
II. Backup
Tutti i cmdlet di backup hanno un parametro posizionale (è il secondo ad eccezione di backup-wdserver dove è il primo parametro posizionale) denominato output. Verrà visualizzato il percorso della cartella in cui si vuole creare il backup. Il backup è sempre un pacchetto ZIP di Distribuzione Web. Per altre informazioni sui pacchetti di distribuzione Web, vedere Provider di pacchetti. Se non viene specificato alcun percorso, i backup vengono creati in una cartella denominata "Backup distribuzione Web" nella cartella documenti dell'utente. I backup vengono denominati machinename_nameofproviderused_[Siteorapporfoldername(Optional)]_timestamp.zip.
Tutti questi cmdlet funzioneranno localmente per impostazione predefinita, a meno che non vengano fornite informazioni sul server remoto passando un file di impostazioni di pubblicazione per il parametro SourcePublish Impostazioni .
R. IIS
Tutti i cmdlet IIS funzioneranno con IIS versione 7 o successiva installata
1. Server
Backup-WDServer
Descrizione: senza argomenti viene eseguito il backup del server corrente in cui viene eseguito questo comando. Usa il provider di server Web noto per questa operazione. Di conseguenza, il pacchetto creato contiene tutti gli artefatti contenuti in un pacchetto webserver. Altre informazioni su questo provider sono disponibili qui.
Parametri cmdlet: il parametro ConfigOnly consente di escludere tutto il contenuto mentre i parametri SkipFileList e SkipFolderList consentono di escludere in modo selettivo uno o più file o cartelle dal pacchetto.
Esempi:
Verrà eseguito il backup di tutto il server Web, ad eccezione del contenuto:
Backup-WDServer -SourcePublishSettings c:\profiles\myserver.publishsettings -ConfigOnly
Creare un elenco dei file che devono essere ignorati. Si tratta di espressioni regolari standard.
$list = @('\\site2\\iisstart.htm','\\site2\\welcome.png')
Backup-WDServer –SkipFileList $list
È anche possibile modificare questa opzione per ignorare tutti i file in site2 modificando l'elenco in $list=@('\site2\')
2. Sito
Backup-WDSite
Descrizione: verrà eseguito il backup di un sito IIS insieme alle relative impostazioni e contenuto usando il provider apphostconfig. Altre informazioni su questo provider sono disponibili qui.
Parametri cmdlet: viene eseguito il backup del nome del sito specificato dal parametro del sito o dal file delle impostazioni di pubblicazione. Il valore del parametro del sito sostituisce la specifica delle impostazioni di pubblicazione per il nome del sito.
ConfigOnly può essere usato per creare un backup senza contenuto. Se il sito usa un pool di app non predefinito, per rendere il pacchetto funzionante in altri server che potrebbero non avere lo stesso pool di applicazioni, usare il parametro switch includeAppPool. In questo modo il pool di applicazioni verrà incluso nel pacchetto.
Parametri distribuzione Web generata automaticamente: vengono creati due tipi di parametri:
- Parametro che consente all'utente di modificare il nome del sito in cui verrà applicato il backup del sito.
- Un altro parametro per consentire all'utente di modificare il percorso fisico del sito e di ogni applicazione Web in tale sito.
Quindi, se ho un sito con tre app sotto otterrò 4 parametri di percorso fisico a parte e un parametro del nome del sito.
Esempi:
Backup-WDSite "Default Web Site" -ConfigOnly
Backup-WDSite MySite –IncludeAppPool
Backup-WDSite MySite -SkipFileList $list
3. Applicazione Web
Backup-WDApp
Descrizione: verrà eseguito il backup di un'applicazione Web usando il provider iisApp. Altre informazioni su questo provider sono disponibili qui. Ecco un buon articolo che spiega cos'è un'applicazione Web e qual è la differenza tra un sito, un'app e una directory virtuale in IIS.
Parametri cmdlet: viene eseguito il backup del nome dell'app specificato dal parametro dell'applicazione o dal file delle impostazioni di pubblicazione. Se nessuno di essi viene specificato, genera un errore. Il valore del parametro dell'applicazione esegue l'override della specifica delle impostazioni di pubblicazione per il nome del sito. I parametri SkipFileList e SkipFolderList consentono di escludere in modo selettivo uno o più file o cartelle dal pacchetto.
Parametri distribuzione Web generati automaticamente: viene creato un parametro per la modifica del nome dell'app o del sito durante il ripristino o l'installazione.
$list = @('\\iisstart\.htm')
Backup-WDApp "Default web site/app" -SkipFileList $list
B. Database
1. MSSql
Backup-WDSqlDatabase
Descrizione: verrà eseguito il backup di un database di Microsoft SQL Server usando il provider dbfullsql. Questo provider usa SMO per creare uno script del database ed espone più di 100 impostazioni del provider per controllare la modalità di script del database. Questo argomento è illustrato in dettaglio qui.
Parametri del cmdlet: viene eseguito il backup del stringa di connessione specificato dal parametro database o SQLServerDB Connessione ionString nel file delle impostazioni di pubblicazione. Il valore del parametro del database sostituisce la specifica delle impostazioni di pubblicazione per SQLServerDB Connessione ionString. Le impostazioni del provider esposte da questo provider dbfullsql possono essere passate usando il parametro Source Impostazioni. Un'impostazione molto comune è scriptdropsfirst che script se l'oggetto esiste elimina script di oggetto. Un'altra impostazione del provider dalle opzioni di scripting SMO consiste nell'impostare scriptdata su false per estrarre solo lo schema.
Parametri distribuzione Web generata automaticamente: viene creato un parametro per modificare il stringa di connessione del database durante il ripristino o l'installazione
Esempi:
New-WDPublishSettings -ComputerName serverName -MSSqlConnectionString "Data Source=localhost;Initial Catalog=MyDb;User id=MyDbUser;Password=MyPassword" -FileName d:\SQLdb.PublishSettings -Credential serverName\Administrator
Backup-WDSQLDatabase -SourcePublishSettings D:\SQLdb.PublishSettings
Backup-WDSQLDatabase -Database "Data Source=localhost;Initial Catalog=MyDb;User id=MyDBUser;Password=MyPassword" -SourceSettings @{ copyAllUsers='false'; scriptDropsFirst='true'; }
2. MySql
Backup-WDMySQLDatabase
Descrizione: verrà eseguito il backup di un database del server MySql usando il provider dbmysql. Questo provider usa mysqldump per eseguire lo script del database. Questo argomento è illustrato in dettaglio qui.
Parametri cmdlet: viene eseguito il backup del stringa di connessione specificato dal parametro Database o mySQLDB Connessione ionString nel file delle impostazioni di pubblicazione. Il valore del parametro del database sostituisce la specifica delle impostazioni di pubblicazione per mySQLDB Connessione ionString. È possibile passare le impostazioni del provider usando il parametro Source Impostazioni. Le impostazioni di uso comune sono includeData e includeSchema. Per impostazione predefinita, questi valori sono impostati su true.
Parametri distribuzione Web generata automaticamente: viene creato un parametro per modificare il stringa di connessione del database durante il ripristino o l'installazione
New-WDPublishSettings -ComputerName serverName -MySqlConnectionString "Data Source=localhost;database=MyDb;Uid=MyDbUser;pwd=MyPassword" -FileName d:\MySQLdb.PublishSettings -Credential serverName\Administrator
Backup-WDMySQLDatabase -Database 'Server=localhost;Database=MyDb;Uid=MyDbUser;pwd=MyPassword’
Backup-WDMySqlDatabase –SourcePublishSettings d:\mysqldb.publishsettings
III. Ripristino
Tutti i cmdlet di ripristino accettano il pacchetto Distribuzione Web da ripristinare come primo parametro posizionale.
WebDeploy supporta il concetto di parametrizzazione dei pacchetti, che consente di modificare alcuni aspetti durante il ripristino (senza modificare il pacchetto). Durante il ripristino, ad esempio, è possibile scegliere di specificare il valore del database stringa di connessione diverso da quello all'interno del pacchetto usando i parametri WebDeploy ( è necessario avere stringa di connessione parametro presente nel pacchetto.
A seconda della modalità di compilazione del pacchetto, il pacchetto Distribuzione Web potrebbe avere uno o più parametri. Questi cmdlet di ripristino controllano il pacchetto e aggiungono parametri dinamici di PowerShell alla raccolta. Pertanto, se un pacchetto ha un parametro Distribuzione Web denominato "Parameter1", si troverà un parametro di PowerShell con il nome "Parameter1". Tuttavia, i parametri dinamici presentano problemi specifici in PowerShell e questo funzionerà solo se i pacchetti non hanno uno spazio nel nome o nel percorso del file.
In alternativa, tutti questi cmdlet di ripristino hanno anche un parametro "Parameters" che consente di specificare manualmente nuovi valori di parametro durante il ripristino. Questo parametro "Parameters" accetta l'oggetto Dictionary di PowerShell per le coppie nome-valore dei parametri distribuzione Web.
Per scoprire i parametri distribuzione Web definiti in qualsiasi pacchetto di distribuzione Web, è sufficiente aprire il file ZIP in Esplora risorse ed esaminare il file parameters.xml presente nella radice del pacchetto. Qualsiasi parametro Web Deploy che non ha un valore predefinito o un valore deve essere specificato un valore. Aggiungere tutti questi parametri in un file xml e passarlo come valore per il parametro ParameterValuesFile. È possibile generare questo file come indicato qui o manualmente. Il formato è
<parameters>
<setParameter name="name1" value="value1" />
<setParameter name="name2" value="value2" />
</parameters>
Il cmdlet Get-WDParameters può leggere questo file e convertirlo in oggetto parametri WebDeploy (dizionario), accettato da tutti i cmdlet di ripristino.
Se un pacchetto viene ripristinato senza specificare un valore per i parametri all'interno, il comportamento predefinito sarà sovrascrivere le risorse da cui è stato originariamente creato il pacchetto. Ad esempio, se si crea un pacchetto da site1 usando backup-wdsite site1, quando si ripristina questo pacchetto usando il cmdlet di ripristino senza fornire valori ai parametri in questo pacchetto, site1 verrà sovrascritto con qualsiasi contenuto del pacchetto, contenuto e configurazione. Lo stesso vale per tutti i cmdlet di ripristino.
Tutti questi cmdlet vengono ripristinati localmente tranne quando viene specificato il file delle impostazioni di pubblicazione di destinazione, nel qual caso la stessa operazione esatta si verificherebbe su un server remoto tramite il servizio Gestione Web (WMSvc) o il servizio agente di distribuzione Web.
R. IIS
1. Server
Restore-WDServer
Descrizione: ripristina un pacchetto server Web. L'utilizzo comune consiste nel eseguire il backup di un server prima di apportare una modifica e, in caso di errore, il server può essere ripristinato applicando il pacchetto di backup distribuzione Web creato prima di apportare le modifiche.
$folderList = @(‘\\app_data’)
Restore-WDServer D:\OWAIS-1_WebServer_20120419121214.zip -DestinationPublishSettings c:\destinationServer.publishSettings –SkipFolderList $folderList
2. Sito
Restore-WDSite
Descrizione: ripristina un pacchetto del sito IIS. Se il pacchetto ha due parametri denominati "Site Physical Path" e "Site Name", verranno esposti come parametro di PowerShell dinamico SitePhysicalPath e SiteName. Questo comando creerà un nuovo sito site1 con percorso c:\site1
fisico . Se non viene specificato alcun valore per questi parametri, il ripristino verrà applicato allo stesso sito e allo stesso contenuto, sovrascrivendo eventuali modifiche che potrebbero essere presenti nel sito.
Parametri: è possibile usare skipfolderlist e skipfilelist per escludere alcune cartelle e/o file dal contenuto del sito.
Restore-WDSite C:\defaultsite.zip -SitePhysicalPath c:\site1 -SiteName site1
Restore-WDSite -Package 'D:\Users\Administrator\Documents\Web Deploy Backups\IIS-Server_AppHostConfig_Default Web Site_20120417100827.zip' -skipFolderList @('App_Data') -verbose
3. App
Restore-WDApp
Descrizione: verrà ripristinata un'applicazione Web. Backup-WDApp crea un pacchetto con un parametro per modificare il nome dell'app in fase di installazione. Può essere usato per ripristinare l'app in un'app diversa durante il ripristino. Il sito deve esistere durante la distribuzione in un'app in un sito. L'app verrà creata da questo pacchetto, ma il sito non verrà creato.
Esempi:
Restore-WDApp C:\myappbackup.zip -ApplicationPathParam1 "Default web site\app1"
B. Database
Restore-WDDatabase
Descrizione: se il database non esiste, verrà creato un nuovo database denominato customers (purché l'utente corrente disponga delle autorizzazioni per questa operazione) ed eseguirà lo script su di esso. Se questa operazione viene eseguita senza valori per i parametri dynamic Web Deploy, il database originale da cui è stato creato il pacchetto verrà sovrascritto. Si noti che se l'impostazione scriptDropsFirst non è stata usata durante la creazione del pacchetto, l'applicazione a un database con contenuto esistente in conflitto avrà esito negativo. Questo cmdlet può essere usato per ripristinare un backup MSSql o MySQL. È possibile ripristinare un database MS SQL solo con un backup creato usando Backup-WDSQLDatabase e il database SQL con un backup creato usando Backup-WDMySqlDatabase.
Esempi:
Backup-WDSqlDatabase "server=.\sqlexpress;integrated security=SSPI;database=customers" "C:\dbbackup.zip"
Restore-WDDatabase c:\dbbackup.zip –DatabaseConnectionStringParam1 "server=.\sqlexpress;integrated security=SSPI;database=customers_copy"
Backup-WDMySqlDatabase "server=localhost;uid=someuser;pwd=somepwd;database=coolDb" "C:\dbbackup.zip"
Restore-WDDatabase c:\dbbackup.zip –DatabaseConnectionStringParam1 "server=localhost;uid=someuser;pwd=somepwd;database=coolDb_copy"
C. Pacchetto generico
Restore-WDPackage
Descrizione: questo cmdlet può essere usato per applicare qualsiasi pacchetto distribuzione Web. Esistono diversi modi per creare o ottenere un pacchetto di distribuzione Web, ad esempio scaricando un pacchetto della raccolta di applicazioni open source, creando un pacchetto in Visual Studio, usando lo strumento da riga di comando msdeploy.exe (altre informazioni) o usando i cmdlet Backup-WD* indicati in precedenza nel documento. Ad esempio, per l'installazione di wordpress in un sito Web predefinito di IIS Server come app denominata wordpress scaricare il pacchetto wordpress dalla raccolta di app in una cartella denominata packages. Tutti i valori predefiniti per i parametri del pacchetto wordpress funzionano così come sono, ma è sufficiente specificare i valori per due parametri obbligatori: admin e non admin mysql password.
Parametri:
Restore-WDPackage c:\Packages\wordpress.zip -DBAdminPassword mysecretserverpassword –DBPassword mysqllocalpassword
IV. Rimuovi
Remove-WDSite -Site NonWorkingSite
Questo comando eliminerà la definizione del sito denominato nonworkingsite in applicationHost.config, nonché il contenuto della directory del sito
V. Ottenere e impostare il framework del pool di app
Questi cmdlet consentono di leggere e modificare la versione di apppool .net Framework.
Get-WDAppPoolFx "default web site"
managedRuntimeVersion
---------------------
v2.0
Set-WDAppPoolFx "default web site" -AppPoolFrameworkVersion v4.0
Get-WDAppPoolFx "default web site"
managedRuntimeVersion
---------------------
v4.0
VI. Impostare WDACL
Questo cmdlet può essere usato per impostare acl nel contenuto di un sito. Ad esempio, si supponga di avere un sito, site1 e si sta tentando di concedere all'utente u1 l'accesso in lettura.
Prima di tutto si controllano le autorizzazioni correnti.
$ret = Get-Acl C:\site1
$ret.Access
I don’t see u1 in the list. Let me give the user u1 access as follows
Set-WDAcl "site1" -SetAclUser u1
Check whether this worked
$ret = Get-Acl C:\site1
$ret.Access
I see that u1 has been given read access as below. [I have not pasted the other permissions on this folder. Just the u1 part]
FileSystemRights : Read, Synchronize
AccessControlType : Allow
IdentityReference : MOSHAIKH1\u1
IsInherited : False
InheritanceFlags : ContainerInherit, ObjectInherit
PropagationFlags : None
VII. Invoke
È possibile richiamare comandi o script in un sistema remoto usando destinationpublishsettings e visualizzare i risultati dell'esecuzione remota in tempo reale. È necessario essere un amministratore del sistema remoto per poter eseguire il provider runcommand in remoto. Altre informazioni su questo provider sono disponibili qui. Il tempo massimo predefinito per cui l'API MWD attende il completamento dello script o del comando specificato è di 5 secondi. Se si desidera aumentare questo tempo di esecuzione, è possibile specificare valori più elevati per waitInterval e waitAttempts, come illustrato nell'esempio seguente.
R. Script
Invoke-WDScript C:\my.cmd –Verbose
Verrà eseguito lo script e sarà possibile visualizzare l'output del comando se eseguito con verbose.
B. Comando
$settings = @ { waitInterval = 3000; waitAttempts = 25;}
Invoke-WDCommand "dir c:\mydirectory /s/b" -DestinationSettings $settings
Verrà eseguito il comando e non verrà visualizzato alcun output perché non è stato specificato alcun output. Tuttavia, questo attenderà 3 secondi tra ogni intervallo di tempo e eseguirà 25 iterazioni di attesa. In tutto, l'esecuzione del processo continuerà al massimo per 75 secondi.
VIII. Sincronizza
Questi cmdlet accettano un'origine e una destinazione e si sincronizzano tra di essi. L'origine non viene mai modificata. Il motivo per cui si usa l'origine parola anziché il client è perché client e server sono termini molto confusi nella sincronizzazione. È possibile sincronizzare il server locale con un server remoto. In questo caso il server remoto è l'origine e il server locale è la destinazione. In alternativa, è possibile eseguire il cmdlet di PowerShell nel computer 1 e sincronizzare i computer 2 e 3. Per usare un'origine remota e/o una destinazione è necessario fornire un file di impostazioni di pubblicazione che può essere creato usando il primo cmdlet menzionato in questo documento. Tutti i cmdlet di sincronizzazione supportano anche i parametri source Impostazioni e destination Impostazioni per poter impostare in modo selettivo le impostazioni del provider per l'origine o la destinazione o entrambi.
R. IIS
1. Server
Si desidera sincronizzare due server IIS 7.5, Owais-1 e Owais-2. Prima di tutto creerò un file publishsettings per ognuno e quindi si sincronizzerò i server. Poiché non sono state specificate le credenziali, questa operazione avrà esito positivo se sono un amministratore in questi due sistemi.
New-WDPublishSettings -ComputerName owais-1 -AgentType MSDepSvc -FileName c:\owais1.publishsettings
Publish settings file created at: 'c:\owais1.publishsettings'.
New-WDPublishSettings -ComputerName owais-2 -AgentType MSDepSvc -FileName c:\owais2.publishsettings
Publish settings file created at: 'c:\owais2.publishsettings'.
Sync-WDServer -SourcePublishSettings c:\owais1.publishSettings -DestinationPublishSettings c:\owais2.publishSettings
2. Sito
Nel comando seguente, il sito2 verrà creato se non esiste e ho modificato anche il percorso fisico (il contenuto verrà copiato nella nuova cartella c:\site2
) e l'associazione del sito.
Sync-WDSite site1 Site2 -SitePhysicalPath c:\site2 -SiteBinding "*:8078:" -IncludeAppPool
3. App
È disponibile un'applicazione in esecuzione nel sito Web predefinito. Voglio spostarlo in Site1. Il comando seguente eseguirà questa operazione.
Sync-WDApp "Default Web Site/drupal" "site1/drupal"
Ora che ho testato la mia nuova app drupal funziona, eliminerò l'app drupal originale nel sito Web predefinito.
Remove-WDSite "Default Web Site/drupal"
B. Database
I cmdlet precedenti hanno illustrato come è possibile eseguire il backup e il ripristino di un database usando un pacchetto Distribuzione Web, ma è anche possibile sincronizzare un database da o verso uno script .sql o eseguire la sincronizzazione direttamente con un'altra istanza di database usando i cmdlet Sync-WDSQLDatabase e Sync-WDMySQLDatabase.
1. MSSql
Sync-WDSQLDatabase "server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb" "server=.\sqlexpress;uid=sa;pwd=************;database=sometestdb"
Verrà creato un nuovo database denominato sometestdb (se non esiste già) e verrà sincronizzato lo schema e i dati.
Sync-"server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb" c:\umbraco.sql
Verrà creato lo script del database umbracodb in umbraco.sql nel percorso indicato in precedenza.
2. MySql
Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=********;database=wordpress265" "server=localhost;uid=root;pwd=************;database=wordpress265_new"
Verrà creato un nuovo database denominato wordpress265_new (se non esiste già) e verrà sincronizzato lo schema e i dati.
Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=***************;database=wordpress265" c:\wordpress.sql
Verrà creato lo script del database wordpress265 in wordpress.sql nel percorso indicato in precedenza.
C. Tutti gli altri elementi
Per la sincronizzazione per utilizzo generico non coperto da altri cmdlet indicati in precedenza, è possibile usare il cmdlet Sync-WDManifest. Si tratta di una sincronizzazione generale del provider di manifesti supportata dall'API MWD. Per altre informazioni, leggere qui. Il manifesto è una raccolta di provider, percorsi provider e impostazioni del provider in un file xml. La struttura è che il nodo radice del file XML è considerato il nome di un provider allo scopo della sincronizzazione corrente. Di conseguenza, non può essere il nome di uno dei provider noti, come indicato nell'elenco qui. Può quindi avere nodi figlio con il nome dell'elemento corrispondente al provider che si vuole includere nella sincronizzazione. Un attributo path rappresenta il percorso del provider ed è obbligatorio. Aggiungere quindi coppie di valori di attributo per ogni impostazione del provider che si vuole sfruttare per l'operazione di sincronizzazione corrente.
Questo cmdlet richiede due manifesti: uno per l'origine e uno per la destinazione. Il manifesto viene sempre eseguito nell'ordine specificato. Se il provider supporta un'operazione di commit, ad esempio il provider apphostconfig che funziona con siti IIS, il commit non viene chiamato a meno che la sincronizzazione non sia stata completata. Di conseguenza, se si dispone di un provider che prevede l'esistenza di un sito dopo che viene creato da un provider, l'operazione avrà esito negativo perché il sito non è ancora stato eseguito il commit. Nell'esempio seguente si sincronizzerà un'app e si includerà un database usato dall'app insieme a esso nel manifesto.
Manifesto di origine:
<demoManifest>
<iisApp path="Site1" />
<dbfullsql path="server=.\sqlexpress;integrated security=SSPI;database=customers" />
</demoManifest>
Manifesto di destinazione:
<demoManifest> <iisApp path="Site2" /> <dbfullsql path="server=.\sqlexpress;integrated security=SSPI;database=customers_demo_cpy" /></demoManifest>Sync-WDManifest C:\sourceManifest.xml C:\destManifest.xmlWARNING: Cannot connect to the database 'customers_demo_cpy'.Retrying operation 'Add' on object dbFullSql (server=.\sqlexpress;uid=sa;database=customers_demo_cpy). Attempt 1 of 5.Manifest : C:\sourceManifest.xmlManifest-Dest : C:\destManifest.xmlTimeTaken : 0:10Errors : 0Warnings : 0BytesCopied : 0ObjectsDeleted : 0ObjectsUpdated : 0ObjectsAdded : 3TotalChanges : 3ParameterChanges : 0