【问题标题】:Redirect error to file将错误重定向到文件
【发布时间】:2016-03-13 17:55:09
【问题描述】:

我正在编写一个 PowerShell 脚本,其中一个部分应将新用户添加到 Active Directory。 我正在使用New-ADUser cmdlet,我想将任何错误(如果会产生任何错误)重定向到文件。 所以我写了

New-ADUser -smth -smth 2>> ./log.txt

但是当我模拟错误时,它只会创建一个空白的log.txt 文件。 我做错了什么?

【问题讨论】:

  • 你用的是什么版本的powershell?
  • 我使用的是 4.0.操作系统是 Windows Server 2012 R2
  • 啊,这是因为解析器抛出了错误,而不是New-ADUser。将您的语句更改为有效的语法,它就会起作用(例如New-ADUser -Identity "nonexistingusername"
  • 对不起,也许我解释错了。例如,我做New-ADUser -Identity "j" 。我收到错误`New-ADUser:找不到与参数名称'Identity'匹配的参数.....`,我想将此消息写入log.txt。我做`New-ADUser -Identity "j" 2>> path\to\log.txt`。它创建文件,但它是空的
  • 对不起,Identity 参数是一个不好的例子(New-ADUser 没有它)。我的观点是,输出重定向器仅从 cmdlet 本身获取错误流,而不是环境引发的任何错误(例如语法错误)。如果您还想捕获解析错误,可以将调用包含在脚本块中:&{New-ADUser -smt} 2>> error.log

标签: powershell active-directory cmdlets


【解决方案1】:

cmdlet 本身引发的错误可以像您尝试的那样重定向:

New-Item -Type File C:\Windows\WinSxS\foo.txt 2>> error.log

环境引发的错误(例如解析器错误)只有在嵌套上下文中运行 cmdlet 时才能被重定向,例如一个脚本块:

& { New-Item -Foo } 2>> error.log

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2014-01-26
    • 1970-01-01
    • 2022-01-05
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多