Powershell IIS Import Sites?
Guten Tag
Ich muss folgende Commands ausführen können. Jedoch gehen diese nicht. Hat jemand eine Alternative?
%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml
%windir%\system32\inetsrv\appcmd add site /in < c:\sites.xml
Danke und Gruss
Veltix
1 Antwort
zu Allererst sollten mal die IIS-Verwaltungsconsole installiert sein.
dazu starte in der Console:
optionalfeatures
...und was Du sonst noch benötigst....
nun zu Deiner Kommandozeile...%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml
appcmd muss in einer Console/Powershell mit Adminrechten ausgrführt werden!
Wahrscheinlich hast Du die Beispiel-Befehlszeile einfach irgendwo ohne nachzudenken abgeschrieben.... sonst wüsstest Du bei Beispielen bewusst irgendwelche NonsensPfad angegeben werden (wie: C:\wasWeissDerFuchs.txt )
Wenn Du zuvor keine Datei dorthin ausgegeben/gespeichert hast so ist dort keine..... und macht auch keinen Sinn dort
Erstmal musst Du die Konfiguration eines fertig konfigurierten Servers exportieren (vorzugsweise auf ein TransportMedium .---der Stick ..Laufwerk L: ?)
%windir%\system32\inetsrv\appcmd list apppool /config /xml > "L:\apppools.xml"
%windir%\system32\inetsrv\appcmd list site /config /xml > "L:\site.xml"
und auf Deinem ZielServer importerst Du die zuvor gespeicherten konfigurationen:
%windir%\system32\inetsrv\appcmd add apppool /in < "L:\apppools.xml"
%windir%\system32\inetsrv\appcmd add site /in < "L:\sites.xml"
kein Akt...
die Wahl des Pfades und der Benennung der Dateien ist völlig Willkürlich. Du muss nur wissen wo Du sie findest.
Für die Handhabung von Einstellungen mit PowerShell hier noch ein paar Links:
- https://adamtheautomator.com/powershell-iis/
- https://learn.microsoft.com/en-us/powershell/module/iisadministration/get-iisapppool?view=windowsserver2022-ps
- https://learn.microsoft.com/en-us/powershell/module/iisadministration/get-iissite?view=windowsserver2022-ps
- https://learn.microsoft.com/en-us/powershell/module/iisadministration/export-iisconfiguration?view=windowsserver2022-ps

aber dir ist schon klar, das die Variablen-Notation von cmd nicht in der Powershell funktioniert...
PowerShell hat seine eigene Notation: $env:VarName .
die Exportzeile einfach mal unter PowerShell per Dotsourcing ausgeführt:
. "$env:windir\system32\inetsrv\appcmd" list apppool /config /xml > "f:\apppools.xml"
raus gehts wie unter Dos...
Powershell kennt allerdings keine " Redirection von RechterHand ("<")" In poweshell kommen die Daten immer von Links und in einer Pipeline
${F:\apppools.xml} | . "$env:windir\system32\inetsrv\appcmd" add apppool /in
#oder...
Get-Content 'F:\apppools.xml' -raw | . "$env:windir\system32\inetsrv\appcmd" add apppool /in
den ganzen Kladderadatsch kannst Du vermeiden, indem du einfach cmd startest. ...dann kannst Du eingeben wie oben in in meiner Antwort.
oder
in der powershell in einer cmd-Kommandozeile:
cmd /c '%windir%\system32\inetsrv\appcmd add apppool /in < f:\apppools.xml'
Der Pfad habe ich einfach zum Testen auf das Laufwerk T gemacht, da es nur eine Test-Umgebung ist. Ansonsten würde ich dies natürlich nicht tun. Die Dateien waren bereits an diesem Ort und ich habe Powershell auch als Administrator ausgeführt. Jedoch hatte es den Operator "<" nicht erkannt. Weshalb ich diesen Command nicht nutzen konnte, zum importieren.