确定。 我想停止正在运行的进程,然后在进程停止后继续使用脚本 。
例如:停止媒体播放器,然后删除媒体播放器数据库(如果你有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
答案 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 } }