繁体   English   中英

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

[英]How to remotely check the status of a web application pool with PowerShell?

我在运行 IIS7 的 Web 服务器上看到很多用于回收应用程序池的脚本,但是有没有办法使用 PowerShell 检查 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

如果你想要漂亮,你可以使用它:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM