无法通过Powershell停止IIIS WAS流程

时间:2015-07-17 11:19:29

标签: windows powershell iis-7.5 powershell-v2.0 was

在Windows Server 2008 R2,64位机器上运行以下代码:

$global:arrServer = @("ph1", "ph2", "ph3")

$global:arrDienste = @("W3SVC", "WAS", "IISADMIN")

$global:strPfad = "D:\WASLogs\"
$global:strLogTime = Get-Date -Format "yyyy-MM-dd--hh-mm-ss"    
$global:strLogDatei = $global:strPfad + "WARTUNG--" + $global:strLogTime + ".log"     

Log_Abfrage_und_Generierung

Dienste_Stop

Function Dienste_Stop
{
  echo "Stop of the services successful?"  | Out-File $global:strLogDatei -Append -Force

  foreach($strServer in $global:arrServer)
  {
    $strInterim2 = $strServer + " (" + $global:appServerNamen + ")"
    echo  "       " $strInterim2 | Out-File $global:strLogDatei -Append -Force

    foreach($strDienst in $global:arrDienste)
    {
        $objWmiService = Get-Wmiobject -Class "win32_service" -computer $strServer -filter "name = '$strDienst'"

        if( $objWmiService.State )            
        {
          $rtnWert = $objWmiService.stopService()
          Switch ($rtnWert.returnvalue)
            {
               0 { echo "$strDienst stopped!" | Out-File $global:strLogDatei -Append -Force }
               2 { echo "$strDienst throws: 'Access denied!'" | Out-File $global:strLogDatei -Append -Force }
               3 { echo "Service $strDienst is not existing on $strServer!" | Out-File $global:strLogDatei -Append -Force }
               5 { echo "$strDienst already stopped!" | Out-File $global:strLogDatei -Append -Force }
               DEFAULT { echo "$strDienst service reports ERROR $($rtnWert.returnValue)" | Out-File $global:strLogDatei -Append -Force }
            }
        }
        else
        {
            echo "Service $strDienst is not existing on $strServer!" | Out-File $global:strLogDatei -Append -Force 
        }
    }
 }
}

Function Log_Abfrage_und_Generierung
{
    if([IO.Directory]::Exists($global:strPfad))
{
    echo "Nothing happening here."
}

else
{
    New-Item -ItemType directory -path $global:strPfad
}
}

这可以在所有计算机ph1,ph2和ph3上重现。但是对于其他一些代码,可以启动WAS,分别可以看到状态。

另请注意:

  1. 可以停止所有其他服务吗?是否与WAS的路径是这样的事实有关? C:\ Windows \ system32 \ svchost.exe -k iissvcs
  2. 我故意使用WMI。
  3. 这里发生了什么?

    蒂亚

1 个答案:

答案 0 :(得分:0)

问题可能是有多个依赖于WAS的服务需要首先停止。 StopService()方法没有超载来停止依赖服务。如果这不能解决问题,请检查StopService的响应代码,以确定上面链接中的问题。

看起来您正在处理代码3,因为“服务不存在”。文档显示此代码实际上意味着“服务无法停止,因为正在运行的其他服务依赖于它。”

当此功能完全融入powershell

时,不确定为什么您决定使用WMI
Stop-Service WAS -Force

WAS Service Properties