Powershell留在记忆中

时间:2015-05-21 14:32:16

标签: powershell msiexec

我正在运行这个简单的MSIEXEC卸载脚本:

 $script = { 
  invoke-expression "msiexec /qn /x '{C5CF41A6-A65A-4BB3-8C6C-87FF4A730EFD}' "
  $logcheck = ""
  while($true)
  {   
    if($logcheck -match "Removal success or error status: 0")
    {
      return
    }
    else
    {
      start-sleep -Seconds 1
   [string]$logcheck = get-eventlog -logname application -newest 1 | foreach-object {$_.message}
    }
  }
}

Invoke-Command -computername Comp-name -Credential Domain\user -scriptblock $script
Write-Host "Done"

一切似乎都很好,MSI正在成功卸载,但powershell流程仍然保持开放状态并且不会停止。

我知道如何阻止它?

1 个答案:

答案 0 :(得分:0)

由于while($true)

,它不会停止

该logcheck不是真正的完整证据,它获取最新的日志项,然后检查状态"删除成功或错误状态:0"。如果任何其他应用程序同时向日志添加条目,则此循环将永远运行。

最好从特定日期获取所有日志项,例如启动msiexec的datetime并查找成功消息。 (而不是使用循环)