代码之家  ›  专栏  ›  技术社区  ›  MichaelF

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

  •  17
  • MichaelF  · 技术社区  · 12 年前

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

    我需要用PSExec解决这个问题吗?或者有没有类似于gwmi的替代方案,我可以使用一个单行命令来调用IIS7服务器上的应用程序池并向我提供状态?

    3 回复  |  直到 12 年前
        1
  •  27
  •   dugas    12 年前

    可以使用Invoke命令在远程计算机上调用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
    
        2
  •  4
  •   Grigoriy Tar    9 年前

    如果你想要漂亮的话,你可以使用这个:

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

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

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