为什么-ErrorVariable在PS ISE中运行时有效,但在通过cmd线运行时不起作用?

时间:2014-03-18 14:15:52

标签: .net powershell error-handling

我尝试在Powershell中捕获错误消息以获取Net use命令,如下所示:

 Invoke-Command -ScriptBlock {net use "jkjkj" /delete /y } -ErrorVariable err 

工作正常,这意味着我可以打印$ err。

我在PS ISE的控制台窗口中运行它。

但是当我从命令行调用.ps1文件中的同一行时,$ err变量为空。

当我在ps1脚本的主块中运行它时,我做错了什么或者应该以不同的方式处理它?<​​/ p>

1 个答案:

答案 0 :(得分:1)

当您运行.ps1文件时,您是否正在寻找它?

如果您使用执行命令(&amp; )从控制台执行.ps1文件,请执行以下操作:

& .\Script.ps1

它将在自己的PowerShell环境中运行,您将无法访问任何变量。

如果您希望它在当前的PowerShell环境中运行,即运行它就像直接从.ps1文件中复制并粘贴代码一样,那么您点源它()就像这样:

. .\Script.ps1

使用点源运行脚本后,您将可以访问所有变量,因为它就像在当前的PowerShell控制台中运行它一样。

有关详细信息,请查看:Running Windows PowerShell Scripts