web-dev-qa-db-ja.com

PowerShellを使用してIIS Webサイトを完全に停止する

Stop-Websiteを使用してWebサイトを停止することは、IIS Managerを使用してWebサイトを停止することとは明らかに異なります。

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

IIS Managerを使用すると、リセット/再起動後の状態は同じです。IIS Managerを使用してサイトを停止すると、永続的な構成(レジストリ?)。

PowerShellを使用してサイトを完全に停止し、リセット/再起動によってサイトが再びオンラインにならないようにする方法を誰かに教えてもらえますか?

(Stop-WebAppPoolはまったく同じ動作を示します。)

8
Bergius

ジョセフの答えは完全に理にかなっていますが、うまくいかないようです。

applicationHost.configのサイトノードの属性 'serverAutoStart'は変更されません。

変更する1つの方法は次のとおりです。

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 Managerでは直接編集できないため、Configuration Editorに移動して変更する必要があることも興味深い点です。

はい、IIS Managerでサイトを開始または停止すると、属性が変更されますが、ユーザーにはわかりません。

12
Peter Hahndorf

これを試してみましょう:

    $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
1
Joseph Kern

まだコメントする担当者がいないので、これを回答として投稿します...

ジョセフの提案を機能させるにはSet-Itemは、変更を永続化するために必要です。

    $site = Set-Item

デフォルトのサイトを停止したままにする完全な4行。

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