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

Mic*_*elF 15 powershell iis-7 application-pool

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

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

dug*_*gas 23

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

$appPoolStatus = Invoke-Command -ComputerName RemoteHostName {Import-Module WebAdministration; Get-WebAppPoolState DefaultAppPool}
$appPoolStatus.Value
Run Code Online (Sandbox Code Playgroud)

请注意,如果要在调用计算机上使用本地定义的变量,则必须根据规则对其进行处理.这个链接是一个很好的帖子解释他们:

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
Run Code Online (Sandbox Code Playgroud)