web-dev-qa-db-ja.com

ARRでPowershellを使用してサーバーを正常に使用不可にする

ARRをリバースプロキシとして使用していますが、さまざまな理由でサーバーを使用できなくしたいと思います。 Powershellを使用してこれを行うにはどうすればよいですか?

編集1:
これを見つけました http://blogs.iis.net/anilr/archive/2009/11/09/using-arr-config-extensibility-to-gracefully-stop-server.aspx JScriptを使用するためのチュートリアル。しかし、私はそれをPowerShellに変換することができません。

編集2:
WebAdministrationモジュールのSet-WebConfigurationPropertyを使用して、サーバーの設定を変更できます。 %windir%\system32\inetsrv\config\schema\arr_schema.xmlでSetStateを見つけましたが、そのメソッドを呼び出す方法がわかりません。

4
Carl Bergquist

サーバーファームの名前がmyWebFarmで、ドレインするように設定しようとしているサーバーがmyNode1であるとすると、次のPowerShellコードでうまくいきます。

Import-Module WebAdministration

$arr = Get-WebConfiguration -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "webFarms/webFarm[@name='myWebFarm']/server[@address='myNode1']/applicationRequestRouting" 
$setState = $arr.Methods['SetState'].CreateInstance()
$setState.Input.Attributes['newState'].Value = 1
$setState.Execute()

CurrentRequestsカウンターの値をチェックして、いつドレインが終了したか(0になるか)を確認したい場合は、次を使用できます。

(Get-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "webFarms/webFarm[@name='myWebFarm']/server[@address='myNode1']/applicationRequestRouting/counters" -Name "currentRequests").Value

一般に、IIS Manager GUIの構成エディターのスクリプトの生成機能は、PowerShellスクリプトを生成して、少なくとも途中まで実行するのに役立ちます。

2
sqlsourcerer