Freigeben über


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

  1. Ö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.
    Screenshot der Windows-Taskleiste mit der Schaltfläche
    (Das blaue Symbol)

  2. Stellen Sie sicher, dass Ihre Ausführungsrichtlinie das Ausführen von Skripten zulässt.

    1. 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

    2. Weitere Informationen zu Ausführungsrichtlinieneinstellungen finden Sie unter Verwenden des Cmdlet „Set-ExecutionPolicy“.

  3. Wechseln Sie zum Skripteverzeichnis von Web Deploy.

    1. 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).

Verwenden des SetupSiteForPublish-Skripts zum Erstellen einer standardmäßigen Veröffentlichungswebsite (keine Datenbanken)

Führen Sie das Skript „SetupSiteForPublish.ps1“ ohne Argumente aus:

Screenshot einer PowerShell-Konsole mit Ausgabe.

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

Screenshot einer PowerShell-Konsole mit Ergebnissen der Skripterstellung.

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

Screenshot einer PowerShell-Konsole mit Skripting und Ausgabe für Veröffentlichungseinstellungen.

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

Screenshot einer PowerShell-Konsole mit Skripting und Ausgabe zum Erstellen einer S Q L-Datenbank.

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

Screenshot einer PowerShell-Konsole mit Skripting und Ausgabe mit Verbindung mit einer vorhandenen Veröffentlichungseinstellungsdatei.

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

Screenshot einer PowerShell-Konsole mit Skripting zum Erstellen einer Datenbank.

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

Screenshot einer PowerShell-Konsole mit Skripting und Ausgabe der Verbindung zu vorhandenen Veröffentlichungseinstellungen.

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.