小编use*_*628的帖子

PowerShell:使用 Invoke-Expression 管理错误

我试图弄清楚如何确定使用 Invoke-Expression 抛出的命令是否失败。甚至变量 $?、$LASTEXITCODE 或 -ErrorVariable 也帮不了我。

例如 :

PS C:\> $cmd="cat c:\xxx.txt"

使用 Invoke-Expression 调用 $cmd

PS C:\> Invoke-Expression $cmd -ErrorVariable err

Get-Content : Cannot find path 'C:\xxx.txt' because it does not exist. At line:1 char:4 + cat <<<< c:\xxx.txt + CategoryInfo : ObjectNotFound: (C:\xxx.txt:String) [Get-Content], ItemNotFoundExcep tion + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

美元?是真的

PS C:\> $?

True

$LASTEXITCODE 为 0

PS C:\> $LASTEXITCODE

0

而 $err 是空的

PS C:\> $err

PS C:\>

我发现的唯一方法是在文件中重定向 STD_ERR 并测试该文件是否为空

PS C:\> Invoke-Expression $cmd …

powershell

3
推荐指数
1
解决办法
8284
查看次数

标签 统计

powershell ×1