【问题标题】:Why -ErrorVariable works when run in PS ISE but does not work when run via cmd line?为什么 -ErrorVariable 在 PS ISE 中运行时有效,但在通过 cmd 行运行时无效?
【发布时间】:2014-04-24 07:00:48
【问题描述】:

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

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

效果很好,这意味着我可以打印 $err。

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

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

当我在 ps1 脚本的主块中运行它时,我做错了什么还是应该以不同的方式处理它??

【问题讨论】:

    标签: .net powershell error-handling


    【解决方案1】:

    当您运行 .ps1 文件时,您是否对它进行点源?

    如果您从控制台使用执行命令 (&) 执行 .ps1 文件,如下所示:

    & .\Script.ps1
    

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

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

    . .\Script.ps1
    

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

    更多信息可以查看:Running Windows PowerShell Scripts

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 2015-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多