web-dev-qa-db-ja.com

PowerShellを使用してWebアプリケーションプールのステータスをリモートで確認する方法

IIS7を実行しているWebサーバーでアプリケーションプールをリサイクルするためのスクリプトがたくさんありますが、PowerShellを使用して、Webアプリケーションプールが実行または停止していることを確認する方法はありますか? Get-WebAppPoolStateがアプリケーションプールのステータスをリモートで返す方法を理解できていないようで、Google-fuが代替品を思い付くことができませんでした。リモートでgwmiを動作させてアプリプールをリサイクルまたは開始できますが、理想的には、アプリプールが実際に停止している場合にのみ実行する必要があります。

これをPSExecで解決する必要がありますか、それともgwmiと同様に使用できる代替手段があり、IIS7サーバーのアプリプールを呼び出してステータスを取得するための1行のコマンドがありますか?

15
MichaelF

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
23
dugas

あなたがかなりアウトしたいなら、これを使うことができます:

Invoke-Command -ComputerName RemoteHostName -ScriptBlock { Get-WebAppPoolState | % {  return  @{($_.itemxpath -split ("'"))[1]="$($_.value)" } }}
3
Grigoriy Tar