2

我试图在自定义日志文件中记录错误,同时从 Active Directory 对用户进行修改。这是代码:

Get-ADUser -LDAPFilter "(objectCategory=user)" -SearchScope Subtree -SearchBase $searchBase | Set-ADUser -PasswordNeverExpires 0

当命令遇到错误时,是否可以检查 Set-ADUser 命令是否对每个用户都成功,并将自定义字符串写入自定义日志文件?(例如访问权限不足)。由于这些错误似乎没有终止,我不知道如何使用 try/catch 解决这个问题。

4

3 回答 3

3

enter code here您可以尝试使用该$error变量来检查每组是否发生错误PasswordNeverExpires

$log = "C:\LogFile.txt"
Get-ADUser -LDAPFilter "(objectCategory=user)" -SearchScope Subtree -SearchBase $searchBase `
    | %{
        $error[0] = $null            
        Set-ADUser -PasswordNeverExpires 0
        If($error[0] -eq $null){
            "User:[" + $_.Name + "] PasswordNeverExpires was set successfully" >> $log
        }
        Else{
            "User:[" + $_.Name + "] PasswordNeverExpires Failed to be set, Error:" >> $log
            $error[0] >> $log
        }
      }
于 2013-08-12T15:43:16.747 回答
1

如果要使用try..catch,可以通过附加-ErrorAction Stop到命令或设置来强制错误终止错误$ErrorActionPreference = "Stop"

于 2013-08-12T16:09:59.813 回答
0

命令 2> Some_log_file 重定向错误。

例如。

dir nosuchfile 2> test.txt
于 2013-08-12T14:51:01.627 回答