powershell:同步停止过程

时间:2010-11-05 15:51:36

标签: powershell

确定。 我想停止正在运行的进程,然后在进程停止后继续使用脚本

例如:停止媒体播放器,然后删除媒体播放器数据库(如果你有wmp12,你可能会理解为什么!) 但是,在应用程序有时间关闭之前,脚本的其余部分将开始执行。

#stop wmp
stop-process -processname wmplayer
#delete
dir "C:\Users\blergh\AppData\Local\Microsoft\Media Player" -filter *wmdb | foreach { del $_.fullname}

我得到了:

Remove-Item : Cannot remove item C:\Users\blergh\AppData\Local\Microsoft\Media Player\CurrentDatabase_372.wmdb: The proces
s cannot access the file 'C:\Users\blergh\AppData\Local\Microsoft\Media Player\CurrentDatabase_372.wmdb' because it is bei
ng used by another process.

我可以强制它同步运行吗?

谢谢, P

3 个答案:

答案 0 :(得分:5)

怎么样:

$wmplayer = get-process wmplayer
stop-process $wmplayer.id
wait-process $wmplayer.id -erroraction:silentlycontinue

请注意,添加了错误,因此在快速终止进程时不会出现错误,

或作为一个更方便的单行:

stop-process -processname wmplayer -passthru| wait-process

答案 1 :(得分:0)

未经测试,但您可以尝试:

stop-process -processname wmplayer
get-process | where-object {$_.HasExited}

答案 2 :(得分:0)

我会选择这样的事情:

calc
calc
calc
Stop-Process -Name calc | 
    Foreach { While ($_ -and !$_.HasExited) { Start-Sleep -milli 300 } }