【问题标题】:How to remotely check the status of a web application pool with PowerShell?如何使用 PowerShell 远程检查 Web 应用程序池的状态?
【发布时间】:2012-09-19 17:22:12
【问题描述】:

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

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

【问题讨论】:

    标签: powershell iis-7 application-pool


    【解决方案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'
      

      【讨论】:

        猜你喜欢
        • 2017-11-14
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-26
        • 1970-01-01
        相关资源
        最近更新 更多