我看到很多脚本用于在运行IIS7的Web服务器上回收应用程序池,但是有没有办法通过Power
Shell来检查Web应用程序池是运行还是停止?我似乎无法找出一种方法来远程让Get-WebAppPoolState返回应用程序池中的状态,而我的Google-fu还没有找到替换.我可以远程获取gwmi的工作和回收或启动我的应用程序池,但理想情况下,我只想运行这个,如果应用程序池实际上停止.
我需要与PSExec一起工作,还是有一个可以使用类似gwmi的替代方法,并有一行命令来调用IIS7服务器上的应用程序池,并给我一个状态?
解决方法
您可以使用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