我尝试在Powershell中捕获错误消息以获取Net use命令,如下所示:
Invoke-Command -ScriptBlock {net use "jkjkj" /delete /y } -ErrorVariable err
工作正常,这意味着我可以打印$ err。
我在PS ISE的控制台窗口中运行它。
但是当我从命令行调用.ps1文件中的同一行时,$ err变量为空。
当我在ps1脚本的主块中运行它时,我做错了什么或者应该以不同的方式处理它?</ p>
答案 0 :(得分:1)
当您运行.ps1文件时,您是否正在寻找它?
如果您使用执行命令(&amp; )从控制台执行.ps1文件,请执行以下操作:
& .\Script.ps1
它将在自己的PowerShell环境中运行,您将无法访问任何变量。
如果您希望它在当前的PowerShell环境中运行,即运行它就像直接从.ps1文件中复制并粘贴代码一样,那么您点源它(。)就像这样:
. .\Script.ps1
使用点源运行脚本后,您将可以访问所有变量,因为它就像在当前的PowerShell控制台中运行它一样。
有关详细信息,请查看:Running Windows PowerShell Scripts