Powershell 留在内存中

Powershell stays in memory

我是运行这个简单的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 进程保持打开状态并且不会停止。

知道如何阻止它吗?

它不会因为 while($true)

而停止

logcheck 并不是真正的完整证明,它获取最新的日志项,然后检查状态 "Removal success or error status: 0"。如果任何其他应用程序同时向日志添加条目,此循环将永远运行。

最好获取某个日期以来的所有日志项,例如启动 msiexec 的日期时间并查找成功消息。 (并且不使用循环)