IIS7を実行しているWebサーバーでアプリケーションプールをリサイクルするためのスクリプトがたくさんありますが、PowerShellを使用して、Webアプリケーションプールが実行または停止していることを確認する方法はありますか? Get-WebAppPoolStateがアプリケーションプールのステータスをリモートで返す方法を理解できていないようで、Google-fuが代替品を思い付くことができませんでした。リモートでgwmiを動作させてアプリプールをリサイクルまたは開始できますが、理想的には、アプリプールが実際に停止している場合にのみ実行する必要があります。
これをPSExecで解決する必要がありますか、それともgwmiと同様に使用できる代替手段があり、IIS7サーバーのアプリプールを呼び出してステータスを取得するための1行のコマンドがありますか?
Invoke-Commandを使用して、リモートマシンでGet-WebAppPoolStateコマンドレットを呼び出すことができます。
$appPoolStatus = Invoke-Command -ComputerName RemoteHostName {Import-Module WebAdministration; Get-WebAppPoolState DefaultAppPool}
$appPoolStatus.Value
呼び出し側マシンでローカルに定義された変数を使用する場合は、ルールに従ってそれらを処理する必要があることに注意してください。このリンクはそれらを説明する優れた投稿です:
http://blogs.msdn.com/b/powershell/archive/2009/12/29/arguments-for-remote-commands.aspx
例:
$appPoolName = "SomeAppPoolName"
$appPoolStatus = Invoke-Command -ComputerName RemoteHostName { param($apn) Import-Module WebAdministration; Get-WebAppPoolState $apn} -Args $appPoolName
あなたがかなりアウトしたいなら、これを使うことができます:
Invoke-Command -ComputerName RemoteHostName -ScriptBlock { Get-WebAppPoolState | % { return @{($_.itemxpath -split ("'"))[1]="$($_.value)" } }}