gpt4 book ai didi

powershell - 如何获取 “Invoke-Expression”的状态,成功还是失败?

转载 作者:行者123 更新时间:2023-12-03 21:16:48 24 4
gpt4 key购买 nike

Invoke-Expression将返回正在调用的命令的所有文本。

但是,如何获得该命令执行成功还是失败的系统返回值?在CMD中,我可以使用%errorlevel%来获取外部命令执行状态。那PowerShell呢?

最佳答案

通常,您将使用$?检查最后执行的语句的状态:

PS C:\> Write-Output 123 | Out-Null; $?
True
PS C:\> Non-ExistingCmdlet 123 | Out-Null; $?
False

但是,这不适用于 Invoke-Expression,因为即使传递给 Invoke-Expression的表达式内部的语句可能会失败,但自身调用的 Invoke-Expression也会成功(即表达式,尽管仍然调用无效/非功能性)

使用 Invoke-Expression,您必须使用try:
try {
Invoke-Expression "Do-ErrorProneAction -Parameter $argument"
} catch {
# error handling go here, $_ contains the error record
}

或陷阱:
trap {
# error handling goes here, $_ contains the error record
}
Invoke-Expression "More-ErrorProneActions"

另一种方法是将 ";$?"附加到要调用的表达式上:
$Expr  = "Write-Host $SomeValue"
$Expr += ';$?'

$Success = Invoke-Expression $Expr
if(-not $Success){
# seems to have failed
}

但依赖于没有任何管道输出

关于powershell - 如何获取 “Invoke-Expression”的状态,成功还是失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32348794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com