Остановка веб-сайтов с помощью Stop-Website, очевидно, не то же самое, что остановка их с помощью диспетчера IIS.
Stop-Website 'Some site'
iisreset.exe
# site is started again
При использовании диспетчера IIS состояние остается прежним после сброса / перезагрузки. Я предполагаю, что остановка сайта с помощью диспетчера IIS изменяет какую-то постоянную конфигурацию (реестр?).
Может ли кто-нибудь сказать мне, как я могу использовать PowerShell для постоянной остановки сайта, чтобы при сбросе / перезагрузке сайт снова не был в сети?
(Stop-WebAppPool демонстрирует точно такое же поведение.)
Ответ Джозефа имеет смысл, но, похоже, он не работает.
Атрибут serverAutoStart на узле сайта в applicationHost.config
не изменено.
Один из способов изменить:
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']" -name "serverAutoStart" -value "False"
но это полный рот.
Другой способ:
Set-ItemProperty "IIS:\Sites\Default Web Site" serverAutoStart False
Также интересно, что этот атрибут не редактируется напрямую в диспетчере IIS, вам нужно войти в Configuration Editor
чтобы изменить это.
Да, запуск или остановка сайта в диспетчере IIS изменяет этот атрибут, но это не очевидно для пользователя.
Попробуем это:
$site = Get-Item 'IIS:\sites\Default Web Site'
$site.serverAutoStart = $False
$site.Stop()
Очевидно, Default Web Site
необходимо заменить. ;-)
У меня нет испытательной лаборатории для этого, поэтому дайте мне знать, работает ли она для вас.
В IIS PSProvider есть множество опций ... запустите следующее, чтобы изучить немного больше:
$site = Get-Item 'IIS:\sites\Default Web Site'
$site | get-member
У меня еще нет представителя, чтобы прокомментировать, поэтому отправляю это как ответ ...
Чтобы предложение Джозефа заработало Set-Item
необходим для сохранения изменений.
$site = Set-Item
Полные 4 строки, чтобы сделать сайт по умолчанию остановленным.
$site = Get-Item 'IIS:\sites\Default Web Site'
$site.serverAutoStart = $False
$site.Stop()
$site = Set-Item