【问题标题】:Tell if Stop-Process was successful or not in PowerShell在 PowerShell 中判断 Stop-Process 是否成功
【发布时间】:2015-11-08 03:23:56
【问题描述】:

目前我在 PowerShell 中像这样启动进程:

$proc = Start-Process notepad -Passthru
$proc | Export-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')

稍后像这样杀死它:

$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process

问题是,如果进程在我调用 $proc | Stop-Process 之前就死了,我会在 PowerShell 输出中得到错误。我需要禁用此错误并获取指示 Stop-Process 是否成功进入 PowerShell 脚本变量的布尔值。如何在 PS 中获取此信息?

【问题讨论】:

  • $? 变量如果最后执行的命令成功则为真,如果失败则为假。要禁用错误输出,请将 -ErrorAction 设置为 SilentlyContinue
  • 您还可以在尝试杀死它之前检查该进程是否存在。
  • @Cole9350,您的解决方案很有魅力。您可以发表您的评论作为答案,我会将其标记为一个。非常感谢!
  • 你也可以使用$proc.HasExited

标签: powershell start-process


【解决方案1】:

使用$? 变量来确定您上次执行的命令是成功还是失败。设置$ErrorActionPreference 变量来决定每个脚本如何处理错误输出,或者使用-ErrorAction 参数来设置每个命令:

$proc = Import-Clixml -Path (Join-Path $ENV:temp 'processhandle.xml')
$proc | Stop-Process -ErrorAction SilentlyContinue
if($?) {
    #Success
    Write-host $proc " Stopped Successfully"
}
else {
    #Failure
    #Use $error variable to retrieve the message
    Write-Error $error[0]
}

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2012-10-10
    相关资源
    最近更新 更多