如何使用PowerShell远程检查Web应用程序池的状态?

时间:2012-09-27 20:32:37

标签: powershell iis-7 application-pool

我在运行IIS7的Web服务器上看到了许多用于回收应用程序池的脚本,但有没有办法通过PowerShell检查Web应用程序池是在运行还是已停止?我似乎无法找到远程让Get-WebAppPoolState返回应用程序池状态的方法,而我的Google-fu无法提供替代品。我可以远程获取gwmi工作并回收或启动我的应用程序池,但理想情况下,我只想在实际停止应用程序池时运行它。

我是否需要使用PSExec解决这个问题,或者我是否可以使用类似于gwmi的替代方法,并使用一行命令调用IIS7服务器上的应用程序池并给我状态?

3 个答案:

答案 0 :(得分:23)

您可以使用Invoke-Command调用远程计算机上的Get-WebAppPoolState cmdlet。

$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

答案 1 :(得分:3)

如果你想要好的话,你可以使用它:

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

答案 2 :(得分:0)

对于旧版本的 IIS(版本 8 之前):

$items = get-wmiobject -namespace 'root\MicrosoftIISv2' -computername $server -class 'IIsApplicationPoolSetting'