Cmdlets do PowerShell da Implantação da Web
por Owais Shaikh
O Web Deploy V3.0 é fornecido com cmdlets do PowerShell para executar a maioria das tarefas com suporte na API de Implantação da Web [Microsoft.Web.Deployment]. Leia mais sobre essa API aqui. Esses cmdlets estão no snapin chamado WDeploySnapin3.0, que é instalado e registrado como um snapin em uma instalação típica ou superior da implantação da Web. Para usar esses cmdlets, adicione o snapin sempre que o console do PowerShell for iniciado ou adicione o snapin ao perfil do PowerShell, o que fará com que todos os consoles carreguem automaticamente o snapin.
Para adicionar quando o console do PowerShell for carregado, execute o seguinte comando na janela do console:
Add-PSSnapin WDeploySnapin3.0
Para adicioná-lo ao perfil do PowerShell:
- Se você já tiver um perfil do PowerShell, vá para a etapa 4.
- Crie uma pasta do WindowsPowerShell em <Meus Documentos>.
- Crie um arquivo chamado Microsoft.PowerShell_profile.ps1
- Adicione esta linha ao arquivo de perfil do PowerShell: “Add-PSSnapin WDeploySnapin3.0”
Alguns pontos a serem observados:
- O console do PowerShell é executado em 64 bits em sistemas de 64 bits e executado no .Net 2.0, exceto até o Windows8. Se você enfrentar problemas devido a um ou a ambos, consulte a seção de solução de problemas para obter soluções.
- Todos os cmdlets que criam um pacote de Implantação da Web criam parâmetros para as tarefas mais comuns e os cmdlets que o consomem aceitam valores de parâmetro.
- Há apenas um cmdlet de remoção para excluir um site ou um aplicativo abaixo dele.
- A Implantação da Web tem parâmetros, mas eles são ortogonais aos parâmetros do cmdlet do PowerShell. Quando os parâmetros são mencionados neste documento, isso implica parâmetros de cmdlet. Os parâmetros de Implantação da Web foram especificamente chamados como parâmetros de Implantação da Web.
I. Publicar arquivo de configurações
Todos os cmdlets fornecidos abaixo têm a capacidade de executar em um artefato remoto, como um servidor remoto ou um banco de dados remoto. Esses exigem mais do que apenas as credenciais. Por exemplo, você precisa do nome do servidor remoto, da cadeia de conexão de banco de dados remoto, se deseja permitir a publicação em um servidor com um certificado de teste etc. Para facilitar o uso, a transferência de informações de credencial do administrador do servidor para o consumidor, por exemplo, um novo tipo de arquivo foi originado agrupando essas configurações. Esse arquivo é chamado de arquivo de configurações de publicação que termina em .publishsettings. Isso é usado pelo Visual Studio para publicação, bem como pelo WebMatrix.
Para poder criar esse arquivo para consumo por outros cmdlets e editá-lo, o cmdlet New-WDPublishSettings pode ser usado. Se nenhum nome de arquivo for especificado, ele criará um novo arquivo no diretório de documentos com o nome <new guid.publishsettings>. Esse caminho será exibido quando o arquivo for criado. Se um nome de arquivo for especificado e o arquivo não existir, ele será criado conforme descrito acima na pasta especificada pelo caminho, no entanto, o caminho para o arquivo deve ser válido. Se o arquivo existir, somente os valores para os atributos que você especificou durante a execução do comando serão modificados, exceto para os atributos no arquivo que são desconhecidos e serão removidos
Exemplo: este exemplo obtém um objeto de credencial e o passa para o novo cmdlet do arquivo de configurações de publicação, juntamente com outros parâmetros
$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
Todos os cmdlets de backup têm um parâmetro posicional (é o segundo, exceto para backup-wdserver, que é o primeiro parâmetro posicional) chamado output. Isso toma um caminho para a pasta onde você deseja que o backup seja criado. O backup é sempre um pacote zip de implantação da Web. Você pode ler mais sobre Pacotes de Implantação da Web no Provedor de Pacotes. Se nenhum caminho for especificado, os backups serão criados em uma pasta chamada “Web Deploy Backups” na pasta de documentos do usuário. Os backups são nomeados como machinename_nameofproviderused_[Siteorapporfoldername(Optional)]_timestamp.zip.
Todos esses cmdlets funcionarão localmente por padrão, a menos que as informações do servidor remoto sejam fornecidas passando um arquivo de configurações de publicação para o parâmetro SourcePublishSettings.
R. IIS
Todos os cmdlets do IIS funcionarão com o IIS versão 7 ou posterior instalado
1. Server (Servidor)
Backup-WDServer
Descrição: sem nenhum argumento, faz backup do servidor atual em que esse comando é executado. Ele usa o provedor de webserver bem conhecido para esta operação. Portanto, o pacote criado contém todos os artefatos que estariam contidos em um pacote de webserver. Você pode ler mais sobre esse provedor aqui.
Parâmetros do cmdlet: o parâmetro ConfigOnly permite excluir todo o conteúdo, enquanto os parâmetros SkipFileList e SkipFolderList permitem excluir seletivamente um ou mais arquivos ou pastas do pacote.
Exemplos:
Isso fará backup de tudo do servidor Web, exceto do conteúdo:
Backup-WDServer -SourcePublishSettings c:\profiles\myserver.publishsettings -ConfigOnly
Crie uma lista dos arquivos que devem ser ignorados. São expressões regulares padrão.
$list = @('\\site2\\iisstart.htm','\\site2\\welcome.png')
Backup-WDServer –SkipFileList $list
Você também pode alterar isso para ignorar todos os arquivos em site2 alterando a lista para $list=@('\site2\')
2. Site
Backup-WDSite
Descrição: fará backup de um site do IIS junto com suas configurações e conteúdo usando o provedor apphostconfig. Você pode ler mais sobre esse provedor aqui.
Parâmetros do cmdlet: é feito backup do nome do site especificado pelo parâmetro do site ou pelo arquivo de configurações de publicação. O valor do parâmetro do site substitui a especificação das configurações de publicação para o nome do site.
ConfigOnly pode ser usado para criar um backup sem conteúdo. Se o site usar um pool de aplicativos não padrão, para fazer esse pacote funcionar em outros servidores que podem não ter o mesmo pool de aplicativos, use o parâmetro switch includeAppPool. Isso agrupará o pool de aplicativos no pacote.
Parâmetros de Implantação da Web gerados automaticamente: dois tipos de parâmetros são criados:
- Um parâmetro para permitir que o usuário altere o nome do site onde o backup do site será aplicado.
- Outro parâmetro para permitir que o usuário altere o caminho físico do site e de cada aplicativo Web nesse site.
Então, se eu tiver um site com três aplicativos abaixo, terei 4 parâmetros de caminho físico separados e um parâmetro de nome de site.
Exemplos:
Backup-WDSite "Default Web Site" -ConfigOnly
Backup-WDSite MySite –IncludeAppPool
Backup-WDSite MySite -SkipFileList $list
3. Aplicativo Web
Backup-WDApp
Descrição: fará backup de um aplicativo Web usando o provedor iisApp. Leia mais sobre esse provedor aqui. Aqui está um artigo útil que explica o que é um aplicativo Web e qual é a diferença entre um site, um aplicativo e um diretório virtual no IIS.
Parâmetros do cmdlet: é feito backup do nome do aplicativo especificado pelo parâmetro do aplicativo ou pelo arquivo de configurações de publicação. Se nenhum deles for especificado, ele emitirá um erro. O valor do parâmetro do aplicativo substitui a especificação das configurações de publicação para o nome do site. Os parâmetros SkipFileList e SkipFolderList permitem excluir seletivamente um ou mais arquivos ou pastas do pacote.
Parâmetros de Implantação da Web gerados automaticamente: um parâmetro para alterar o nome do aplicativo ou site durante a restauração ou instalação é criado.
$list = @('\\iisstart\.htm')
Backup-WDApp "Default web site/app" -SkipFileList $list
B. Backup de banco de dados
1. MSSql
Backup-WDSqlDatabase
Descrição: fará backup de um banco de dados do Microsoft SQL Server usando o provedor dbfullsql. Esse provedor usa o SMO para criar scripts do banco de dados e expõe mais de 100 configurações de provedor para controlar a maneira como o script do banco de dados é criado. Isso é abordado em detalhes aqui.
Parâmetros do cmdlet: é feito backup da cadeia de conexão especificada pelo parâmetro Database ou SQLServerDBConnectionString no arquivo de configurações de publicação. O valor do parâmetro do banco de dados substitui a especificação de configurações de publicação para SQLServerDBConnectionString. As configurações do provedor expostas por esse provedor dbfullsql podem ser passadas usando o parâmetro SourceSettings. Uma configuração muito usada é scriptdropsfirst que cria os scripts se o objeto existir e solta os scripts de objeto. Outra configuração de provedor das opções de script SMO é definir scriptdata como false para extrair o esquema apenas.
Parâmetros de Implantação da Web gerados automaticamente: um parâmetro é criado para alterar a cadeia de conexão do banco de dados durante a restauração ou instalação
Exemplos:
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
Descrição: fará backup de um Banco de dados do Microsoft MySql Server usando o provedor dbmysql. Esse provedor usa mysqldump para criar scripts do banco de dados. Isso é abordado em detalhes aqui.
Parâmetros do cmdlet: é feito backup da cadeia de conexão especificada pelo parâmetro Database ou mySQLDBConnectionString no arquivo de configurações de publicação. O valor do parâmetro do banco de dados substitui a especificação de configurações de publicação para mySQLDBConnectionString. As configurações do provedor podem ser passadas usando o parâmetro SourceSettings. As configurações mais usadas são includeData e includeSchema. Elas são definidas como true.
Parâmetros de Implantação da Web gerados automaticamente: um parâmetro é criado para alterar a cadeia de conexão do banco de dados durante a restauração ou instalação
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. Restaurar
Todos os cmdlets de restauração usam o pacote de Ferramenta de Implantação da Web para restaurar como o primeiro parâmetro posicional.
O WebDeploy aceita o conceito de parametrização dos pacotes, que permite alterar alguns aspectos durante a restauração (sem modificar o pacote). Por exemplo, durante a restauração, você pode optar por especificar o valor da cadeia de conexão do banco de dados que é diferente do que está dentro do pacote usando parâmetros WebDeploy (você precisa ter o parâmetro de cadeia de conexão presente no pacote.)
Dependendo de como o pacote foi criado, o pacote de Implantação da Web pode ter um ou mais parâmetros. Esses cmdlets de restauração inspecionam o pacote e adicionam parâmetros dinâmicos do PowerShell à coleção. Portanto, se um pacote tiver um parâmetro de Implantação da Web chamado “Parameter1”, você encontrará um parâmetro do PowerShell com o nome “Parameter1”. No entanto, os parâmetros dinâmicos têm seus próprios problemas no PowerShell e isso só funcionará se os pacotes não tiverem um espaço em seu nome ou no caminho para o arquivo.
Como alternativa, todos esses cmdlets de restauração também têm um parâmetro “Parameters” que permite especificar manualmente novos valores de parâmetro durante a restauração. Esse parâmetro “Parameters” usa o objeto PowerShell Dictionary para os pares de valores de nome dos parâmetros de Implantação da Web.
Para descobrir os parâmetros de Implantação da Web definidos em qualquer pacote de Implantação da Web, basta abrir o arquivo zip no Windows Explorer e examinar o arquivo de parameters.xml presente na raiz do pacote. Qualquer parâmetro de Implantação da Web que não tenha um valor padrão ou um valor precise de um valor a ser especificado. Adicione todos esses parâmetros em um arquivo xml e passe-o como o valor para o parâmetro ParameterValuesFile. Você pode gerar este arquivo como fornecido aqui ou manualmente. O formato é
<parameters>
<setParameter name="name1" value="value1" />
<setParameter name="name2" value="value2" />
</parameters>
O cmdlet Get-WDParameters pode ler esse arquivo e convertê-lo em objeto de parâmetros WebDeploy (dicionário), que é aceito por todos os cmdlets de restauração.
Se qualquer pacote for restaurado sem especificar um valor para os parâmetros internos, o comportamento padrão será substituir os recursos com os quais o pacote foi originalmente criado. Por exemplo, se eu criar um pacote do site1 usando o site de backup wdsite1, quando restaurar esse pacote usando o cmdlet de restauração sem fornecer nenhum valor para os parâmetros neste pacote, o site1 será substituído com o que o pacote contiver, o conteúdo e a configuração. O mesmo vale para todos os cmdlets de restauração.
Todos esses cmdlets são restaurados localmente, exceto quando o arquivo de configurações de publicação de destino é especificado, caso em que a mesma operação exata ocorreria em um servidor remoto por meio do WMSvc (Serviço de Gerenciamento da Web) ou do serviço Microsoft Deployment Agent.
R. IIS
1. Server (Servidor)
Restore-WDServer
Descrição: restaura um pacote de servidor Web. O uso comum é fazer backup de um servidor antes de fazer uma alteração e, em caso de falha, o servidor pode ser revertido aplicando o pacote de backup de Implantação da Web criado antes de fazer as alterações.
$folderList = @(‘\\app_data’)
Restore-WDServer D:\OWAIS-1_WebServer_20120419121214.zip -DestinationPublishSettings c:\destinationServer.publishSettings –SkipFolderList $folderList
2. Site
Restore-WDSite
Descrição: restaura um pacote de servidor site IIS. Se o pacote tiver dois parâmetros chamados “Site Physical Path” e “Site Name”, eles serão expostos como parâmetros powershell dinâmicos SitePhysicalPath e SiteName. Esse comando criará um novo site site1 com caminho físico c:\site1
. Se nenhum valor for especificado para esses parâmetros, a restauração será aplicada ao mesmo site e conteúdo, substituindo quaisquer alterações que você possa ter no site.
Parâmetros: talvez você queira usar skipfolderlist e skipfilelist para não copiar algumas pastas e/ou arquivos no conteúdo do site.
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. Aplicativo
Restore-WDApp
Descrição: restaurará um aplicativo Web. Backup-WDApp cria pacote com um parâmetro para alterar o nome do aplicativo no momento da instalação. Isso pode ser usado para restaurar o aplicativo para um aplicativo diferente durante a restauração. O site deve existir ao implantar em um aplicativo em um site. O aplicativo será criado por este pacote, mas o site não será criado.
Exemplos:
Restore-WDApp C:\myappbackup.zip -ApplicationPathParam1 "Default web site\app1"
B. Backup de banco de dados
Restore-WDDatabase
Descrição: Se o banco de dados não existir, isso criará um novo banco de dados chamado clientes (desde que o usuário atual tenha permissões para essa operação) e executará o script nele. Se isso for executado sem nenhum valor para parâmetros dinâmicos de Implantação da Web, o banco de dados original a partir do qual esse pacote foi criado será substituído. Observe que, se a configuração scriptDropsFirst não foi usada ao criar o pacote, a aplicação a um banco de dados com conteúdo existente conflitante falhará. Esse cmdlet pode ser usado para restaurar um backup do MSSql ou do MySQL. Você só pode restaurar um banco de dados MS SQL com um backup criado usando Backup-WDSQLDatabase e Meu banco de dados SQL com um backup criado usando Backup-WDMySqlDatabase.
Exemplos:
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. Pacote genérico
Restore-WDPackage
Descrição: esse cmdlet pode ser usado para aplicar qualquer pacote de Implantação da Web. Há várias maneiras de criar ou obter um pacote de Implantação da Web, como baixar um pacote da Galeria de Aplicativos de código aberto, criar um pacote no Visual Studio, usar a ferramenta de linha de comando msdeploy.exe (mais informações) ou usar os cmdlets Backup-WD* observados anteriormente no documento. Por exemplo, para instalar o wordpress em um site padrão do servidor IIS como um aplicativo chamado wordpress, baixe o pacote wordpress da galeria de aplicativos em uma pasta chamada pacotes. Todos os valores padrão para os parâmetros do pacote wordpress funcionarão como estão, mas só precisa especificar os valores para dois parâmetros necessários: admin e non admin mysql password.
Parâmetros:
Restore-WDPackage c:\Packages\wordpress.zip -DBAdminPassword mysecretserverpassword –DBPassword mysqllocalpassword
IV. Remover
Remove-WDSite -Site NonWorkingSite
Esse comando excluirá a definição do site chamado nonworkingsite em applicationHost.config, bem como o conteúdo do diretório do site
V. Obter e definir o Framework do pool de aplicativos
Esses cmdlets permitem que você leia e altere a versão do .net framework do apppool.
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. Definir WDACL
Esse cmdlet pode ser usado para definir acls no conteúdo de um site. Por exemplo, digamos que eu tenho um site, site1, e estou tentando conceder acesso de leitura ao usuário u1.
Primeiro eu verifico as permissões atuais.
$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
Você pode invocar comandos ou scripts em um sistema remoto usando destinationpublishsettings e ver os resultados da execução remota em tempo real. Você precisa ser um administrador no sistema remoto para poder executar o provedor runcommand remotamente. Você pode ler mais sobre esse provedor aqui. O tempo máximo padrão que a Api MWD aguarda a conclusão do script ou comando fornecido é de 5 segundos. Se desejar aumentar esse tempo de execução, você poderá especificar valores mais altos para waitInterval e waitAttempts, conforme mostrado no exemplo abaixo.
R. Script
Invoke-WDScript C:\my.cmd –Verbose
Isso executará o script e você poderá ver a saída do comando se executá-lo com detalhes.
B. Comando
$settings = @ { waitInterval = 3000; waitAttempts = 25;}
Invoke-WDCommand "dir c:\mydirectory /s/b" -DestinationSettings $settings
Isso executará o comando e nenhuma saída será exibida, já que o detalhado não foi especificado. No entanto, isso esperará 3 segundos entre cada lapso de tempo e fará 25 iterações de espera. Ao todo, a execução do processo continuará, no máximo, por 75 segundos.
VIII. Sincronizar
Esses cmdlets pegam uma origem e um destino e sincronizam entre eles. A fonte nunca é modificada. A razão pela qual uso a palavra fonte em vez de cliente é porque cliente e servidor são termos muito confusos na sincronização. Você pode potencialmente sincronizar o servidor local com um servidor remoto. Nesse caso, o servidor remoto é a origem e o servidor local é o destino. Como alternativa, você pode executar o cmdlet do PowerShell no computador 1 e sincronizar os computadores 2 e 3. Para usar uma origem remota e/ou destino, você precisa fornecer um arquivo de configurações de publicação que pode ser criado usando o primeiro cmdlet mencionado neste documento. Todos os cmdlets de sincronização também dão suporte a parâmetros sourceSettings e destinationSettings, para poder definir seletivamente as configurações do provedor para a origem ou o destino ou ambos.
R. IIS
1. Server (Servidor)
Quero sincronizar dois servidores IIS 7.5, Owais-1 e Owais-2. Primeiro criarei um arquivo publishsettings para cada um e, em seguida, sincronizarei os servidores. Como eu não especifiquei minhas credenciais, isso será bem-sucedido se eu for um administrador nesses dois sistemas.
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. Site
No comando a seguir, o site2 será criado se ele não existir, e eu também alterei o caminho físico (o conteúdo será copiado para a nova pasta c:\site2
) e a vinculação do site.
Sync-WDSite site1 Site2 -SitePhysicalPath c:\site2 -SiteBinding "*:8078:" -IncludeAppPool
3. Aplicativo
Tenho um aplicativo em execução no site padrão. Quero mover isso para o Site1. O comando a seguir fará isso.
Sync-WDApp "Default Web Site/drupal" "site1/drupal"
Agora que testei meu novo aplicativo drupal funciona, excluirei o aplicativo drupal original no site padrão.
Remove-WDSite "Default Web Site/drupal"
B. Backup de banco de dados
Os cmdlets anteriores mostraram como você pode fazer backup e restaurar um banco de dados usando um pacote de Implantação da Web, no entanto, também é possível sincronizar um banco de dados de ou para um script .sql ou sincronizar diretamente com outra instância de banco de dados usando os cmdlets Sync-WDSQLDatabase e Sync-WDMySQLDatabase.
1. MSSql
Sync-WDSQLDatabase "server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb" "server=.\sqlexpress;uid=sa;pwd=************;database=sometestdb"
Isso criará um novo banco de dados chamado sometestdb (se ainda não existir) e sincronizará esquema e dados.
Sync-"server=.\sqlexpress;uid=sa;pwd=********;database=umbracodb" c:\umbraco.sql
Isso fará com que o banco de dados umbracodb seja criado por script para umbraco.sql no caminho fornecido acima.
2. MySql
Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=********;database=wordpress265" "server=localhost;uid=root;pwd=************;database=wordpress265_new"
Isso criará um novo banco de dados chamado wordpress265_new (se ainda não existir) e sincronizará esquema e dados.
Sync-WDMySQLDatabase "server=localhost;uid=root;pwd=***************;database=wordpress265" c:\wordpress.sql
Isso criará um script para fora do banco de dados wordpress265 em wordpress.sql no caminho dado acima.
C. Todo o resto
Para sincronização de propósito geral não coberta por outros cmdlets fornecidos acima, você pode usar o cmdlet Sync-WDManifest. Esta é uma sincronização geral do provedor de manifesto com suporte da API MWD. Saiba mais sobre isso aqui. Manifesto é uma coleção de provedores, caminhos de provedor e configurações de provedor em um arquivo xml. Na estrutura, o nó raiz do arquivo xml é considerado o nome de um provedor para a finalidade da sincronização atual. Portanto, não pode ser o nome de nenhum dos provedores conhecidos, conforme fornecido na lista aqui. Em seguida, ele pode ter nós filho com o nome do elemento correspondente ao provedor que você deseja incluir na sincronização. Um atributo de caminho representa o caminho desse provedor e é obrigatório. Em seguida, adicione pares de valores de atributo para cada configuração de provedor que você deseja aproveitar para a operação de sincronização atual.
Esse cmdlet precisa de dois manifestos: um para a origem e outro para o destino. O manifesto é sempre executado na ordem especificada. Se o provedor oferecer suporte a uma operação de confirmação, como o provedor apphostconfig, que funciona com Sites do IIS, a confirmação não será chamada, a menos que a sincronização seja concluída. Portanto, se você tiver um provedor que espera que um site exista após um provedor que o cria, isso falhará, já que ainda não foi feito commit no site. No exemplo a seguir, sincronizarei um aplicativo e incluirei um banco de dados que o aplicativo usa junto com ele no manifesto.
Manifesto de origem:
<demoManifest>
<iisApp path="Site1" />
<dbfullsql path="server=.\sqlexpress;integrated security=SSPI;database=customers" />
</demoManifest>
Manifesto de destino:
<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