如何使用 PowerShell 远程检查 Web 应用程序池的状态?
Posted
技术标签:
【中文标题】如何使用 PowerShell 远程检查 Web 应用程序池的状态?【英文标题】:How to remotely check the status of a web application pool with PowerShell? 【发布时间】:2012-09-19 17:22:12 【问题描述】:我在运行 IIS7 的 Web 服务器上看到很多用于回收应用程序池的脚本,但有没有办法使用 PowerShell 检查 Web 应用程序池是在运行还是停止?我似乎无法找到远程让 Get-WebAppPoolState 返回应用程序池状态的方法,而我的 Google-fu 也无法找到替代品。我可以远程让 gwmi 工作并回收或启动我的应用程序池,但理想情况下,我只想在应用程序池实际停止时运行它。
我是否需要使用 PSExec 解决这个问题,或者是否可以使用类似于 gwmi 的替代方法并使用一行命令来调用 IIS7 服务器上的应用程序池并提供状态?
【问题讨论】:
【参考方案1】:您可以使用 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
【讨论】:
@Kiquenet - 我不明白你的问题,你能详细说明一下吗? Get-WebAppPoolState 命令与 Get-WebItemState 命令有何不同?例如,$state = Get-WebItemState "IIS:\AppPools\$appPoolName";返回 $state.value;【参考方案2】:如果你想要漂亮,你可以使用它:
Invoke-Command -ComputerName RemoteHostName -ScriptBlock Get-WebAppPoolState | % return @($_.itemxpath -split ("'"))[1]="$($_.value)"
【讨论】:
【参考方案3】:对于旧版本的 IIS(版本 8 之前):
$items = get-wmiobject -namespace 'root\MicrosoftIISv2' -computername $server -class 'IIsApplicationPoolSetting'
【讨论】:
以上是关于如何使用 PowerShell 远程检查 Web 应用程序池的状态?的主要内容,如果未能解决你的问题,请参考以下文章
powershell 用于服务器运行状况的Powershell GUI Tool v.1.3远程检查
如何在 Powershell 中自动执行 Telnet 端口检查?