Condividi tramite


Script di PowerShell per l'automazione dell'installazione della distribuzione Web

di Kristina Olson

La versione 2.1 di Distribuzione Web installa diversi script di PowerShell che semplificano la configurazione del server IIS in modo che gli utenti possano pubblicarlo usando Distribuzione Web. Questa pagina illustra come usare questi script per creare un sito di pubblicazione predefinito, abilitare la pubblicazione per un sito e un utente nuovo o esistente, creare database SQL o MySQL o configurare le regole di delega, tutto usando PowerShell.

Gli script che verranno usati sono:

  • SetupSiteForPublish.ps1
  • CreateSqlDatabase.ps1
  • CreateMySqlDatabase.ps1
  • AddDelegationRules.ps1

Requisiti

  • Il server deve avere un sistema operativo fornito con IIS7, ovvero Windows Server 2008 o Windows Server 2008 R2. È necessario essere un amministratore nel computer.

  • Assicurarsi che vengano soddisfatte le condizioni seguenti:

    • PowerShell2 deve essere installato (è integrato in Windows Server 2008 R2; per Windows Server 2008, è possibile ottenere PowerShell2 come aggiornamento da qui: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b. Potrebbe essere necessario un riavvio.
    • Il ruolo Server Web (IIS) deve essere abilitato in Server Manager.
    • Il servizio ruolo Servizio gestione Web di IIS ("Servizio di gestione") deve essere abilitato in Server Manager
    • Per usare gli script di database di PowerShell, il server deve avere accesso a un database SQL o MySQL. Sql Server Management Objects deve essere installato anche per SQL.
    • Distribuzione Web deve essere installata con il componente Management Service Integration. Per visualizzare questa opzione nel programma di installazione distribuzione Web, è necessario abilitare prima il servizio di gestione Web.

Istruzioni generali di PowerShell

  1. Avviare una finestra di comando di PowerShell.

    Fare clic sull'icona di PowerShell nella barra delle applicazioni oppure fare clic su Start, digitare PowerShell e selezionare Windows PowerShell.
    Screenshot della barra delle applicazioni di Windows che mostra il pulsante Start.
    (Icona blu)

  2. Assicurarsi che i criteri di esecuzione consentano l'esecuzione di script.

    1. Digitare "Get-ExecutionPolicy". Se è limitato (impostazione predefinita) è necessario reimpostare un'impostazione più permissiva, ad esempio digitando "Set-ExecutionPolicy AllSigned". L'impostazione AllSigned consentirà l'esecuzione di script firmati, ma richiederà se non sono attendibili

    2. Per altre informazioni sulle impostazioni dei criteri di esecuzione, vedere Uso del cmdlet Set-ExecutionPolicy.

  3. Passare alla directory Degli script di distribuzione Web.

    1. Digitare cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts' (ma sostituire %programfiles% con il percorso effettivo, ad esempio C:\Program Files).

Usare lo script SetupSiteForPublish per creare un sito Web di pubblicazione predefinito (senza database)

Eseguire lo script SetupSiteForPublish.ps1 senza argomenti:

Screenshot di una console di PowerShell con output.

Operazioni seguenti:

Lo script crea un utente e un sito per la pubblicazione non amministratore e salva le informazioni sul profilo di pubblicazione in un file sul desktop. In particolare, crea un sito denominato WDeploySite con la radice del sito fisico in %systemdrive%\inetpub\WDeploySite. Il sito avrà un pool di applicazioni corrispondente, WDeployAppPool e verrà assegnato alla porta 8080 per impostazione predefinita (o alla porta successiva disponibile se un altro sito usa 8080). Lo script crea anche un utente windows locale non amministratore denominato WDeploySiteuser e concede l'ACL controllo completo dell'utente nella cartella WDeploySite e autorizzazioni di Gestione IIS al sito. Le informazioni sulle impostazioni vengono salvate sul desktop in un file denominato WDeploy.Publish Impostazioni. Questo file può essere utilizzato da WebMatrix (o potenzialmente Visual Studio) per la pubblicazione nel sito. Questo profilo non contiene informazioni sulla pubblicazione del database a questo punto.

Abilitare la pubblicazione di distribuzione Web per qualsiasi sito e utente usando lo script SetupSiteForPublish:

Script: SetupSiteForPublish.ps1

Descrizione: per un sito e un account utente specificati, consente all'utente specificato di pubblicare nel sito specificato. Lo script crea l'account utente, il sito e il pool di applicazioni; imposta gli ACL di directory e le autorizzazioni di Gestione IIS per il sito; e salva le informazioni sull'impostazione in un file.

Parametri:

Nome Descrizione Valore predefinito Note
siteName Nome del sito. Se il sito non esiste, verrà creato. WDeploySite
sitePhysicalPath Percorso file fisico per il contenuto del sito. Se la directory non esiste, verrà creata. %systemdrive%\inetpub\WDeploySite
siteAppPoolName Nome del pool di applicazioni che verrà associato al sito. Se il pool di applicazioni non esiste, verrà creato. WDeployAppPool È consigliabile dedicare un pool di applicazioni per sito.
sitePort Porta per le associazioni del sito. Prima porta da 8080-8200 che non è in uso da un altro sito. Potrebbe essere necessaria una regola del firewall per aprire la porta per il traffico remoto.
deploymentUserName Nome dell'utente a cui assegnare l'accesso al sito. Se l'utente non esiste, verrà creato un utente non amministratore. WDeploySiteuser
deploymentUserPassword Password per l'utente di distribuzione. Se non si specifica una password, ne verrà generata e salvata automaticamente nel file di impostazioni. [generato automaticamente]
managedRunTimeVersion Se specificato, tenterà di impostare la versione di runtime specificata per il pool di applicazioni. Se non viene trovata una versione di runtime corrispondente, verranno usate le impostazioni predefinite del pool di applicazioni. Impostazioni predefinite del pool di applicazioni Formato di esempio "v2.0" o "v4.0"
publishSettingSavePath Directory esistente in cui verrà salvato il file delle impostazioni. Desktop dell'utente corrente Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore.
publishSettingFileName Nome del file di impostazioni, inclusa l'estensione. WDeploy.Publish Impostazioni Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte.

Esempi:

Abilitare la pubblicazione per un utente esistente in un sito esistente (la password non verrà salvata nel file delle impostazioni):

.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Screenshot di una console di PowerShell con i risultati della creazione di script.

Abilitare la pubblicazione per un nuovo utente in un nuovo sito, con un nome personalizzato e un percorso per il file delle impostazioni di pubblicazione:

.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings

Screenshot di una console di PowerShell con script e output per le impostazioni di pubblicazione.

Il file Publish Impostazioni contiene anche la nuova password utente. Si noti che i campi stringa di connessione sono vuoti. Possono essere compilati a mano oppure è possibile aggiungerli al profilo usando gli script di generazione del database:

<?xml version="1.0" encoding="utf-8"?>
<publishData>
  <publishProfile publishUrl="RWS-2008R2" msdeploySite="NewSite" destinationAppUrl="http://RWS-2008R2:81" mySQLDBConnectionString="" SQLServerDBConnectionString="" profileName="Default Settings" publishMethod="MSDeploy" userName="NewSiteUser" userPWD="Passw0rd" savePWD="True" />
</publishData>

Creare un database SQL per un account di pubblicazione usando lo script CreateSqlDatabase

Script: CreateSqlDatabase.ps1

Descrizione: crea un database, un account di accesso, un utente del database con autorizzazioni db_owner per il database e salva le informazioni stringa di connessione corrispondenti in un file di impostazioni.

Parametri:

Nome Descrizione Valore predefinito Note
databaseName Nome del database da creare. wDeploySqldb
databaseUserName Nome dell'utente e dell'account di accesso del database. wdeploySqlUser Specificare un nuovo utente ogni volta oppure reimpostare la password di accesso di un utente e invalidare le credenziali di connessione precedenti dell'utente.
databaseUserPassword Password per l'utente e l'account di accesso del database. Se non viene specificata alcuna password, ne verrà generata automaticamente una. [generato automaticamente] In alcuni casi la password generata automaticamente può contenere caratteri che causano problemi con determinati client di pubblicazione. Valutare la possibilità di modificare lo script se si usa lo script per la creazione automatica del database.
database Amministrazione User Nome utente amministratore di SQL Server (in genere "sa"). REQUIRED
database Amministrazione Password Password per l'account amministratore di SQL Server. REQUIRED
sqlServerInstanceName Posizione del server SQL. .\Sqlexpress

Generali

publishSettingSavePath Directory esistente in cui verrà salvato il file delle impostazioni. Desktop dell'utente corrente Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore.
publishSettingFileName Nome del file di impostazioni, inclusa l'estensione. WDeploy.Publish Impostazioni Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte.

Esempi:

Creare un database con l'utente usando le impostazioni predefinite (database SQLExpress locale):

.\CreateSqlDatabase.ps1

Screenshot di una console di PowerShell con script e output per la creazione di un database S Q L.

Creare un nuovo database e aggiungere le informazioni stringa di connessione al file c:\profiles\UserA.PublishSettingsdelle impostazioni di pubblicazione esistente:

PS C:\Program Files\IIS\Microsoft Web Deploy V2\Scripts> .\CreateSqlDatabase.ps1 -databaseName UserADb -databaseUserName UserADbUser -databaseUserPassword Passw0rdA -databaseAdminUser sa -databaseAdminPassword Passw0rd -sqlServerInstanceName .\SQLExpress -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Screenshot di una console di PowerShell con scripting e output con connessione al file di impostazioni di pubblicazione esistente.

Creare un database MySQL per un account di pubblicazione usando lo script CreateMySqlDatabase

Script: CreateMySqlDatabase.ps1

Descrizione: crea un database, un utente del database con tutti i privilegi nel database (in localhost) e salva le informazioni stringa di connessione in un file di impostazioni

Parametri:

Nome Descrizione Valore predefinito Note
databaseName Nome del database da creare. WDeployDb
databaseUserName Nome dell'utente del database. WDeployUser
databaseUserPassword Password per l'utente e l'account di accesso del database. Se non viene specificata alcuna password, ne verrà generata automaticamente una. [generato automaticamente] In alcuni casi la password generata automaticamente può contenere caratteri che causano problemi con determinati client di pubblicazione. Valutare la possibilità di modificare lo script se si usa lo script per la creazione automatica del database.
database Amministrazione User Nome per l'amministratore del database, in genere "root". REQUIRED Se non viene specificato, verrà richiesto di specificare questo parametro
database Amministrazione Password Password per l'account amministratore del server. REQUIRED Se non ne viene specificato uno, verrà richiesto un valore per questo parametro.
serverHostName Percorso del server MySQL localhost *Vedere la nota seguente tabella

General (Generale):

publishSettingSavePath Directory esistente in cui verrà salvato il file delle impostazioni. Desktop dell'utente corrente Deve essere una directory esistente. Se la directory specificata non esiste, verrà generato un errore.
publishSettingFileName Nome del file di impostazioni, inclusa l'estensione. WDeploy.Publish Impostazioni Ricordarsi di includere l'estensione. Se il file esiste già, le informazioni sul sito verranno sovrascritte.

*Se si specifica un valore non localhost per serverHostName e non si modificano le autorizzazioni per l'utente, l'utente potrebbe non essere in grado di accedere al proprio database. Per impostazione predefinita, le autorizzazioni concesse in questo script forniscono all'utente del database l'accesso dal computer locale. Se il server di database non è ospitato nello stesso computer, la sezione relativa alla concessione delle autorizzazioni dello script di PowerShell deve essere modificata per concedere autorizzazioni più generali, ad esempio modificando la riga di script seguente per consentire l'accesso da qualsiasi computer:

Riga di autorizzazioni script predefinita:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"

Riga autorizzazioni script modificata:

$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"

Esempi:

Creare un database con l'utente usando le impostazioni predefinite:

.\CreateMySqlDatabase.ps1

Screenshot di una console di PowerShell con script per creare un database.

Creare un nuovo database e aggiungere le informazioni stringa di connessione al file c:\profiles\UserA.PublishSettingsdelle impostazioni di pubblicazione esistente:

.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings

Screenshot di una console di PowerShell con scripting e output della connessione alle impostazioni di pubblicazione esistenti.

Configurare le regole di delega per il server usando lo script AddDelegationRules

Script: AddDelegationRules.ps1

Descrizione: questo script viene eseguito automaticamente in fase di installazione dal programma di installazione durante un'installazione completa, ma se non è stata eseguita un'installazione completa o si vuole ripristinare le regole in qualsiasi momento, è possibile eseguire nuovamente questo script AddDelegationRules.

Parametri:

Nome Descrizione Valore predefinito Note
elevatedUsername Nome dell'account utente a cui verrà concesso l'accesso in scrittura al file applicationHost.config del server. Questo utente verrà usato come utente run-as in appPoolPipeline, appPoolNetFx e createApp rules. WDeployUser Crea solo un utente windows locale e non funzionerà se la configurazione condivisa è abilitata. La password per questo account utente verrà reimpostata se lo script viene eseguito una seconda volta.
elevatedPassword Generato automaticamente se non specificato. [generato automaticamente]
adminUsername Nome di un account utente Amministrazione istrator che verrà usato come utente run-as nella regola recycleApp. WDeploy Amministrazione Crea solo un utente windows locale e non funzionerà se la configurazione condivisa è abilitata. La password per questo account utente verrà reimpostata se lo script viene eseguito una seconda volta.
adminPassword Generato automaticamente se non specificato [generato automaticamente]
ignorePasswordResetErrors Commutatore. Se con privilegi elevati/adminUsername fa riferimento a un account esistente, questa opzione consente allo script di reimpostare la password per l'account. [omesso - reimpostazione delle password utente non consentite] La reimpostazione di una password utente può comportare la perdita dell'accesso ai dati da parte dell'utente. Questa opzione deve essere usata con cautela. Per ulteriori informazioni, vedere https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Si noti anche che la nuova password utente non è archiviata e non può essere recuperata in un secondo momento.