2015-05-21 65 views
0

我卸載運行MSIEXEC的這個簡單的腳本:PowerShell的停留在記憶

$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" 

一切似乎工作的偉大,微星正在成功卸載,但PowerShell進程保持打開狀態,並不會停止。

任何想法我怎麼能阻止它?

回答

0

它不會停止,因爲的while($true)

這Logcheck的是不是真的充分證明,它得到的最新日誌項,然後狀態「刪除成功或錯誤狀態:0」的檢查。如果任何其他應用程序同時向日志添加條目,則此循環將永久運行。

更好地獲取特定日期以來的所有日誌項目,例如,啓動msiexec的日期時間並查找成功消息。 (而不是使用循環)