Dauerhaftes Stoppen von IIS-Websites mit PowerShell

8

Das Stoppen von Websites mit Stop-Website ist anscheinend nicht dasselbe wie das Stoppen mit dem IIS-Manager.

Stop-Website 'Some site'
iisreset.exe
# site is started again

Bei Verwendung von IIS Manager ist der Status nach einem Zurücksetzen / Neustart derselbe. Ich denke, das Stoppen einer Site mit IIS Manager ändert eine dauerhafte Konfiguration (die Registrierung?).

Kann mir jemand sagen, wie ich mit PowerShell eine Site dauerhaft stoppen kann, damit die Site durch Zurücksetzen / Neustarten nicht wieder online geschaltet wird?

(Stop-WebAppPool zeigt genau das gleiche Verhalten.)

Bergius
quelle
Ich nehme an, Remove-Websiteist nicht das, was Sie tun wollen?
Joseph Kern
1
Nein, das ist ein bisschen zu destruktiv :). Dies dient zum vorübergehenden Stoppen einer Site, jedoch nicht nur bis zum nächsten Zurücksetzen.
Bergius

Antworten:

12

Josephs Antwort macht durchaus Sinn, scheint aber nicht zu funktionieren.

Das Attribut 'serverAutoStart' auf dem Standortknoten in applicationHost.configwird nicht geändert.

Eine Möglichkeit zur Änderung ist:

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']" -name "serverAutoStart" -value "False"

aber das ist ein Schluck.

Ein anderer Weg ist:

Set-ItemProperty "IIS:\Sites\Default Web Site" serverAutoStart False

Interessant ist auch, dass dieses Attribut in IIS Manager nicht direkt bearbeitet werden kann. Sie müssen es in Configuration Editorändern, um es zu ändern.

Ja, das Starten oder Stoppen der Site in IIS Manager ändert dieses Attribut, aber das ist für den Benutzer nicht offensichtlich.

Peter Hahndorf
quelle
Hmmmm ...: Ich frage mich, ob das nur den Speicher ändert ... Set-ItemProperty scheint sowieso kanonischer zu sein. guter Fang!
Joseph Kern
Die Autostart-Eigenschaft befindet sich im IIS-Manager,right click on the web site -> "Manage Web Site" -> "Advanced Settings..." -> "Start Automatically"
Joseph Kern
@JosephKern - Hmm, das sehe ich nicht, nicht auf meinem 2012 R2 oder 2016. Unter welcher Überschrift ist das aufgeführt General?
Peter Hahndorf
Ich bin mir nicht sicher, warum du es nicht siehst ... Ich habe es auf 2008R2 IIS7
Joseph Kern
@JosephKern - Ich habe einen älteren Server mit 2008 R2 überprüft und sehe ihn dort, aber er ist in neueren Versionen verschwunden. Ich wundere mich warum?
Peter Hahndorf
1

Lass uns das versuchen:

    $site = Get-Item 'IIS:\sites\Default Web Site'
    $site.serverAutoStart = $False
    $site.Stop()

Muss natürlich Default Web Siteersetzt werden. ;-);

Ich habe kein Testlabor-Setup dafür, also lassen Sie mich wissen, ob es für Sie funktioniert.

Der IIS-PSProvider bietet eine Vielzahl von Optionen. Führen Sie die folgenden Schritte aus, um weitere Informationen zu erhalten:

    $site = Get-Item 'IIS:\sites\Default Web Site'
    $site | get-member
Joseph Kern
quelle
Berechnet nicht, soweit ich das beurteilen kann. serverAutoStart befindet sich in applicationHost.config, und Änderungen an einem ConfigurationElement-Objekt werden nicht beibehalten.
Bergius
Ich könnte applicationHost.config wahrscheinlich manuell ändern, aber das riecht nach allem Falschen :).
Bergius
Siehe Peters Beitrag, Set-ItemProperty sieht so aus, wie Sie es möchten. Ich war ach so nah ... ;-)
Joseph Kern
1
@JosephKern - nah genug, um noch Stimmen zu bekommen, :-) Das funktioniert nicht, Kinder.
Peter Hahndorf
Upvote war meins, weil es im Geiste richtig war :). Die Lösung wird akzeptiert und ist für alle sichtbar, daher sehe ich keinen Schaden darin, Josephs Bemühungen zu belohnen.
Bergius
0

Ich habe den Repräsentanten noch nicht zum Kommentieren, also poste ich dies als Antwort ...

Damit Josephs Vorschlag funktioniert, Set-Itemist a erforderlich, um die Änderung fortzusetzen.

    $site = Set-Item

Die vollständigen 4 Zeilen, damit die Standardwebsite angehalten wird, bleiben gestoppt.

    $site = Get-Item 'IIS:\sites\Default Web Site'
    $site.serverAutoStart = $False
    $site.Stop()
    $site = Set-Item
AndOs
quelle