Powershell 将错误重定向到文件

Powershell 将错误重定向到文件,powershell,active-directory,cmdlets,Powershell,Active Directory,Cmdlets,我正在编写一个PowerShell脚本,其中一个部分应该向Active Directory添加一个新用户。 我正在使用New ADUsercmdlet,我想将任何错误(如果会产生任何错误)重定向到一个文件。 所以我写 New-ADUser -smth -smth 2>> ./log.txt 但当我模拟错误时,它只创建一个空白的log.txt文件。 我做错了什么?cmdlet本身引发的错误可以像您尝试的那样重定向: New-Item -Type File C:\Windows\Win

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

New-ADUser -smth -smth 2>> ./log.txt
但当我模拟错误时,它只创建一个空白的
log.txt
文件。
我做错了什么?

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

New-Item -Type File C:\Windows\WinSxS\foo.txt 2>> error.log
只有在嵌套上下文(例如脚本块)中运行cmdlet时,才能重定向环境引发的错误(例如解析器错误):

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

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