PowerShell-Skripte zur Automatisierung des Web Deploy-Setups
von Kristina Olson
Die Version v2.1 von Web Deploy installiert mehrere PowerShell-Skripte, die das Konfigurieren Ihres IIS-Servers vereinfachen, damit Benutzer darauf veröffentlichen können, indem sie das Microsoft-Webbereitstellungstool verwenden. Auf dieser Seite wird gezeigt, wie Sie mithilfe dieser Skripte eine Standardveröffentlichungs-Site erstellen, die Veröffentlichung für eine neue oder vorhandene Site und einen vorhandenen Benutzer aktivieren, Veröffentlichungs-SQL- oder MySQL-Datenbanken erstellen oder Delegierungsregeln einrichten – alles mithilfe von PowerShell.
Sie verwenden folgende Skripte:
- SetupSiteForPublish.ps1
- CreateSqlDatabase.ps1
- CreateMySqlDatabase.ps1
- AddDelegationRules.ps1
Anforderungen
Der Server muss über ein Betriebssystem verfügen, das im Lieferumfang von IIS7 enthalten ist. Dies bedeutet entweder Windows Server 2008 oder Windows Server 2008 R2. Sie müssen Administrator auf dem Computer sein.
Stellen Sie sicher, dass die folgenden Bedingungen erfüllt sind:
- PowerShell2 muss installiert sein (dies ist in Windows Server 2008 R2 integriert; für Windows Server 2008 können Sie PowerShell2 als Update von hier abrufen: https://www.catalog.update.microsoft.com/ScopedViewInline.aspx?updateid=0be83604-db27-4b99-976a-136a92bd579b). Möglicherweise ist ein Neustart erforderlich.
- Die Webserverrolle (IIS) muss in Server-Manager aktiviert sein.
- Der Rollendienst Webverwaltungsdienst von IIS („Verwaltungsdienst“) muss in Server-Manager aktiviert sein.
- Um die PowerShell-Datenbankskripte zu verwenden, muss der Server Zugriff auf eine SQL- oder MySQL-Datenbank haben. SQL Server Management Objects müssen auch für SQL installiert sein.
- Web Deploy muss mit der Integrationskomponente des Verwaltungsdiensts installiert sein. (Damit diese Option im Web Deploy-Installationsprogramm angezeigt wird, muss der Webverwaltungsdienst zuerst aktiviert werden.)
Allgemeine PowerShell-Anleitungen
Öffnen Sie ein PowerShell-Befehlsfenster.
Klicken Sie in der Taskleiste auf das PowerShell-Symbol oder klicken Sie auf Start, geben Sie PowerShell ein und wählen Sie Windows PowerShell aus.
(Das blaue Symbol)Stellen Sie sicher, dass Ihre Ausführungsrichtlinie das Ausführen von Skripten zulässt.
Geben Sie „Get-ExecutionPolicy“ ein. Wenn sie eingeschränkt ist (Standardeinstellung), müssen Sie auf eine weniger eingeschränkte Einstellung zurücksetzen, z. B. durch Eingabe von „Set-ExecutionPolicy AllSigned“. Die Einstellung „AllSigned“ lässt die Ausführung signierter Skripte zu, fordert Sie jedoch zum Handeln auf, falls sie nicht vertrauenswürdig sind
Weitere Informationen zu Ausführungsrichtlinieneinstellungen finden Sie unter Verwenden des Cmdlet „Set-ExecutionPolicy“.
Wechseln Sie zum Skripteverzeichnis von Web Deploy.
- Tippen Sie
cd '%programfiles%\IIS\Microsoft Web Deploy v2\Scripts'
ein (aber ersetzen Sie%programfiles%
durch den tatsächlichen Pfad, z. B.C:\Program Files
).
- Tippen Sie
Verwenden des SetupSiteForPublish-Skripts zum Erstellen einer standardmäßigen Veröffentlichungswebsite (keine Datenbanken)
Führen Sie das Skript „SetupSiteForPublish.ps1“ ohne Argumente aus:
Was dies bewirkt:
Das Skript erstellt einen Benutzer und eine Site für die Veröffentlichung durch Nicht-Administratoren und speichert die Veröffentlichungsprofilinformationen in einer Datei auf dem Desktop. Genauer gesagt wird eine Site namens „WDeploySite“ mit physischem Site-Stamm unter %systemdrive%\inetpub\WDeploySite
erstellt. Die Site verfügt über einen übereinstimmenden Anwendungspool, „WDeployAppPool“, und wird standardmäßig Port 8080 zugewiesen (oder dem nächsten verfügbaren Port, wenn eine andere Site 8080 verwendet). Das Skript erstellt außerdem einen lokalen Windows-Benutzer (kein Administrator) mit dem Namen „WDeploySiteuser“ und gewährt diesem Benutzer Zugriffssteuerungslisten mit voller Kontrolle im Ordner „WDeploySite“ und IIS-Manager-Berechtigungen für die Site. Die Einstellungsinformationen werden auf dem Desktop in einer Datei namens „WDeploy.PublishSettings“ gespeichert. Diese Datei kann von WebMatrix (oder potenziell Visual Studio) für die Veröffentlichung auf der Site verwendet werden. Dieses Profil enthält zu diesem Zeitpunkt KEINE Datenbankveröffentlichungsinformationen.
Aktivieren Sie die Web Deploy-Veröffentlichung für jede beliebige Site und beliebige Benutzer mithilfe des Skripts „SetupSiteForPublish“:
Skript: SetupSiteForPublish.ps1
Beschreibung: Für eine angegebene Site und ein angegebenes Benutzerkonto kann der angegebene Benutzer auf der angegebenen Site veröffentlichen. Das Skript erstellt das Benutzerkonto, die Site und den Anwendungspool, legt die Verzeichnis-ACLs und IIS-Manager-Berechtigungen für die Site fest und speichert die Einstellungsinformationen in einer Datei.
Parameter:
Name | Beschreibung | Standardwert | Hinweise |
---|---|---|---|
siteName | Name der Site. Wenn die Site nicht vorhanden ist, wird sie erstellt. | WDeploySite | |
sitePhysicalPath | Speicherort der physischen Datei für den Site-Inhalt. Wenn das Verzeichnis nicht vorhanden ist, wird es erstellt. | %systemdrive%\inetpub\WDeploySite |
|
siteAppPoolName | Name des Anwendungspools, der der Site zugeordnet wird. Wenn der angegebene Anwendungspool nicht vorhanden ist, wird er erstellt. | WDeployAppPool | Es wird empfohlen, einen Anwendungspool pro Site zuzuordnen. |
sitePort | Port für die Site-Bindungen. | Erster Port von 8080 bis 8200, der nicht von einer anderen Site verwendet wird. | Möglicherweise ist eine Firewallregel erforderlich, um den Port für Remote-Datenverkehr zu öffnen. |
deploymentUserName | Name des Benutzers, dem Zugriff auf die Site gewährt werden soll. Wenn der Benutzer nicht vorhanden ist, wird ein Nicht-Administrator-Benutzer erstellt. | WDeploySiteuser | |
deploymentUserPassword | Passwort für den Bereitstellungsbenutzer. Wenn kein Passwort angegeben ist, wird automatisch eins generiert und in der Einstellungsdatei gespeichert. | [autogenerated] | |
managedRunTimeVersion | Falls angegeben, wird versucht, die angegebene Laufzeitversion für den Anwendungspool festzulegen. Falls keine übereinstimmende Laufzeitversion gefunden wird, wird der Anwendungspool standardmäßig verwendet. | Standardeinstellungen für den Anwendungspool | Beispielformat „v2.0“ oder „v4.0“ |
publishSettingSavePath | Ein vorhandenes Verzeichnis, in dem die Einstellungsdatei gespeichert wird. | Desktop des aktuellen Benutzers | Muss ein vorhandenes Verzeichnis sein. Wenn das angegebene Verzeichnis nicht vorhanden ist, führt dies zu einem Fehler. |
publishSettingFileName | Name der Einstellungsdatei, einschließlich der Erweiterung. | WDeploy.PublishSettings | Denken Sie daran, die Erweiterung mit anzugeben. Wenn die Datei bereits vorhanden ist, werden die darin aufgeführten Site-Informationen überschrieben. |
Beispiele:
Aktivieren Sie die Veröffentlichung für einen vorhandenen Benutzer auf einer vorhandenen Site (das Passwort wird nicht in der Einstellungsdatei gespeichert):
.\SetupSiteForPublish.ps1 -siteName ExistingSite -deploymentUserName UserA -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Aktivieren Sie die Veröffentlichung für einen neuen Benutzer auf einer neuen Site mit einem benutzerdefinierten Namen und Speicherort für die Veröffentlichungseinstellungsdatei:
.\SetupSiteForPublish.ps1 -siteName NewSite -sitePhysicalPath C:\inetpub\NewSiteRoot -siteAppPoolName NewSitePool -sitePort 81 -deploymentUserName NewSiteUser -deploymentUserPassword Passw0rd -publishSettingSavePath C:\profiles -publishSettingFileName NewSite.PublishSettings
Die Datei „PublishSettings“ enthält auch das neue Benutzerpasswort. Beachten Sie, dass die Verbindungszeichenfolgefelder leer sind – sie können manuell ausgefüllt werden, oder Sie können dies dem Profil mithilfe der Skripte zur Datenbankgenerierung hinzufügen:
<?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>
Erstellen einer SQL-Datenbank für ein Veröffentlichungskonto mithilfe des Skripts „CreateSqlDatabase“
Skript: CreateSqlDatabase.ps1
Beschreibung: Erstellt eine Datenbank, eine Anmeldung, einen Datenbankbenutzer mit „db_owner“-Berechtigungen für die Datenbank und speichert die entsprechenden Verbindungszeichenfolgeinformationen in einer Einstellungsdatei.
Parameter:
Name | Beschreibung | Standardwert | Hinweise |
---|---|---|---|
databaseName | Name der zu erstellenden Datenbank. | wDeploySqldb | |
databaseUserName | Name des Datenbankbenutzers und Anmeldung. | wdeploySqlUser | Geben Sie immer einen neuen Benutzer an, ansonsten müssen Sie am Ende unter Umständen das Anmeldepasswort eines Benutzers zurücksetzen und die vorherigen Verbindungsanmeldeinformationen des Benutzers ungültig machen. |
databaseUserPassword | Das Passwort für den Datenbankbenutzer und die Anmeldung. Wenn kein Passwort angegeben wird, wird automatisch eines generiert. | [autogenerated] | In einigen Fällen kann das automatisch generierte Passwort Zeichen enthalten, die Probleme mit bestimmten Veröffentlichungsclients verursachen. Erwägen Sie das Ändern des Skripts, wenn Sie das Skript für die automatisierte Datenbankerstellung verwenden. |
databaseAdminUser | Benutzername des SQL-Server-Administrators (in der Regel „sa“). | ERFORDERLICH | |
databaseAdminPassword | Passwort für das SQL-Server-Datenbankadministratorkonto. | ERFORDERLICH | |
sqlServerInstanceName | Speicherort des SQL-Servers. | .\SQLExpress |
Allgemein
publishSettingSavePath | Ein vorhandenes Verzeichnis, in dem die Einstellungsdatei gespeichert wird. | Desktop des aktuellen Benutzers | Muss ein vorhandenes Verzeichnis sein. Wenn das angegebene Verzeichnis nicht vorhanden ist, führt dies zu einem Fehler. |
---|---|---|---|
publishSettingFileName | Name der Einstellungsdatei, einschließlich der Erweiterung. | WDeploy.PublishSettings | Denken Sie daran, die Erweiterung mit anzugeben. Wenn die Datei bereits vorhanden ist, werden die darin aufgeführten Site-Informationen überschrieben. |
Beispiele:
Erstellen Sie eine Datenbank mit dem Benutzer mithilfe der Standardwerte (lokale SQLExpress-Datenbank):
.\CreateSqlDatabase.ps1
Erstellen Sie eine neue Datenbank und fügen Sie die Verbindungszeichenfolgeninformationen zur vorhandenen Veröffentlichungseinstellungsdatei c:\profiles\UserA.PublishSettings
hinzu:
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
Erstellen einer MySQL-Datenbank für ein Veröffentlichungskonto mithilfe des Skripts „CreateMySqlDatabase“
Skript: CreateMySqlDatabase.ps1
Beschreibung: Erstellt eine Datenbank, einen Datenbankbenutzer mit allen Berechtigungen für die Datenbank (bei localhost) und speichert die Verbindungszeichenfolgeninformationen in einer Einstellungsdatei
Parameter:
Name | Beschreibung | Standardwert | Hinweise |
---|---|---|---|
databaseName | Name der zu erstellenden Datenbank. | WDeployDb | |
databaseUserName | Name des Datenbankbenutzers. | WDeployUser | |
databaseUserPassword | Das Passwort für den Datenbankbenutzer und die Anmeldung. Wenn kein Passwort angegeben wird, wird automatisch eines generiert. | [autogenerated] | In einigen Fällen kann das automatisch generierte Passwort Zeichen enthalten, die Probleme mit bestimmten Veröffentlichungsclients verursachen. Erwägen Sie das Ändern des Skripts, wenn Sie das Skript für die automatisierte Datenbankerstellung verwenden. |
databaseAdminUser | Name für den Datenbankadministrator, in der Regel „root“. | ERFORDERLICH | Falls nicht angegeben, werden Sie zur Eingabe dieses Parameters aufgefordert |
databaseAdminPassword | Passwort für das Serveradministratorkonto. | ERFORDERLICH | Sie werden aufgefordert, einen Wert für diesen Parameter einzugeben, wenn Sie dies nicht getan haben. |
serverHostName | Speicherort des MySQL-Servers | localhost | * siehe Hinweis unterhalb der Tabelle |
Allgemein:
publishSettingSavePath | Ein vorhandenes Verzeichnis, in dem die Einstellungsdatei gespeichert wird. | Desktop des aktuellen Benutzers | Muss ein vorhandenes Verzeichnis sein. Wenn das angegebene Verzeichnis nicht vorhanden ist, führt dies zu einem Fehler. |
---|---|---|---|
publishSettingFileName | Name der Einstellungsdatei, einschließlich der Erweiterung. | WDeploy.PublishSettings | Denken Sie daran, die Erweiterung mit anzugeben. Wenn die Datei bereits vorhanden ist, werden die darin aufgeführten Site-Informationen überschrieben. |
* Wenn Sie einen Nicht-Localhost-Wert für „serverHostName“ angeben und die Berechtigungen für den Benutzer nicht ändern, kann der Benutzer möglicherweise nicht auf seine Datenbank zugreifen. Standardmäßig gewähren die in diesem Skript erteilten Berechtigungen den Datenbankbenutzerzugriff vom lokalen Computer aus. Wenn der Datenbankserver nicht auf demselben Computer gehostet wird, sollte der Berechtigungserteilungsbereich des PowerShell-Skripts geändert werden, um allgemeinere Berechtigungen zu erteilen, z. B. durch Ändern der folgenden Skriptzeile, um den Zugriff von einem beliebigen Computer zu ermöglichen:
Standardskriptberechtigungszeile:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'localhost' identified by '{2}';"
Geänderte Skriptberechtigungszeile:
$createUserScript = "Grant all privileges on {0}.* to '{1}'@'%' identified by '{2}';"
Beispiele:
Erstellen Sie eine Datenbank mit dem Benutzer mithilfe der Standardwerte:
.\CreateMySqlDatabase.ps1
Erstellen Sie eine neue Datenbank und fügen Sie die Verbindungszeichenfolgeninformationen zur vorhandenen Veröffentlichungseinstellungsdatei c:\profiles\UserA.PublishSettings
hinzu:
.\CreateMySqlDatabase.ps1 -databaseName UserADb -databaseUsername UserADbUser -databaseUserPassword Passw0rd -databaseAdminUser root -databaseAdminPassword iis6!dfu -publishSettingSavePath C:\profiles -publishSettingFileName UserA.PublishSettings
Einrichten von Delegierungsregeln für den Server mithilfe des Skripts „AddDelegationRules“
Skript: AddDelegationRules.ps1
Beschreibung: Dieses Skript wird automatisch zur Einrichtungszeit bei einer vollständigen Installation vom Installationsprogramm ausgeführt, aber wenn Sie keine vollständige Installation möchten oder die Regeln jederzeit reparieren möchten, können Sie dieses AddDelegationRules-Skript erneut ausführen.
Parameter:
Name | Beschreibung | Standardwert | Hinweise |
---|---|---|---|
elevatedUsername | Name für das Benutzerkonto, dem Schreibzugriff auf die „applicationHost.config“-Datei des Servers gewährt wird. Dieser Benutzer wird als ausführender Benutzer in den Regeln „appPoolPipeline“, „appPoolNetFx“ und „createApp“ verwendet. | WDeployUser | Erstellt nur einen lokalen Windows-Benutzer und funktioniert nicht, wenn die freigegebene Konfiguration aktiviert ist. Das Passwort für dieses Benutzerkonto wird zurückgesetzt, wenn das Skript ein zweites Mal ausgeführt wird. |
elevatedPassword | Automatisch generiert, wenn nicht angegeben. | [autogenerated] | |
adminUsername | Name für ein Administratorbenutzerkonto, das als ausführender Benutzer in der recycleApp-Regel verwendet wird. | WDeployAdmin | Erstellt nur einen lokalen Windows-Benutzer und funktioniert nicht, wenn die freigegebene Konfiguration aktiviert ist. Das Passwort für dieses Benutzerkonto wird zurückgesetzt, wenn das Skript ein zweites Mal ausgeführt wird. |
adminPassword | Automatisch generiert, wenn nicht angegeben | [autogenerated] | |
ignorePasswordResetErrors | Schalter. Wenn „elevated/adminUsername“ auf ein vorhandenes Konto verweist, kann das Skript das Passwort für das Konto mit diesem Schalter zurücksetzen. | [ausgelassen ‒ Zurücksetzen von Benutzerpasswörtern nicht zulässig] | Das Zurücksetzen eines Benutzerpassworts kann dazu führen, dass der Benutzer den Zugriff auf Daten verliert. Dieser Schalter sollte mit Vorsicht angewendet werden. Weitere Informationen finden Sie unter https://windows.microsoft.com/windows-vista/What-are-the-risks-of-resetting-a-password. Beachten Sie auch, dass das neue Benutzerpasswort nicht gespeichert wird und später nicht abgerufen werden kann. |