【问题标题】:Using powershell to change attribute使用powershell更改属性
【发布时间】:2020-09-03 23:12:40
【问题描述】:

首先: 我是 Powershell 脚本的新手。

想通过 powershell 更改某些用户的属性“preferredLanguage”。 用户写在 txt 文件中 测试用户000 testUser001 等

我的第一次尝试是成为一个包含用户和一些属性的列表:

     $users = ForEach ($user in $(Get-Content C:\Temp\users.txt)) {

    Get-AdUser $user -Properties Department, Mail, preferredLanguage

}

 $users |
 Select-Object SamAccountName,Department,Mail, preferredLanguage |
 Export-CSV -Path C:\temp\outputUsers.csv -NoTypeInformation

到目前为止有效:

"SamAccountName","Department","Mail","preferredLanguage" "tesUser000","dept1","testUser000@domain.com","DE" "testUser0001","dept2","testUser001@domain.com",

testUser000 在preferredLanguage 中有一个条目 testUser0001 没有条目 没关系。当我完成 users.txt 后,有 100 多个用户在 'preferredLanguage' 中没有条目

现在我想更改首选语言,并在互联网上进行了一些调查,我做了这个:

$users = ForEach ($user in $(Get-Content C:\Temp\users.txt)) {

    Get-AdUser $user -Properties Department, Mail, preferredLanguage

}

 $users |
 Set-AdUser $users -Replace @preferredLanguage="DE" |

 Select-Object SamAccountName,Department,Mail, preferredLanguage |
 Export-CSV -Path C:\temp\outputUsers.csv -NoTypeInformation

当我正确理解这个脚本时,它会从我的 txt 文件中获取每个用户的给定属性,然后它会更改 txt 文件中用户的属性“preferredLanguage”,然后再次选择它将输出保存在 csv 文件中。

也许有人可以查看脚本并且会非常友好地给我反馈或更好的方法,因为我太害怕在 AD-Server 上使用这个脚本。

【问题讨论】:

  • 刚接触 SO 你可能不知道这一点,但习惯于点击左侧的 ✓ 图标 accept the answer that solved your problem。这将帮助其他有类似问题的人更轻松地找到它,并有助于激发人们回答您的问题。

标签: powershell active-directory command


【解决方案1】:

只有几件事:

  • Get-AdUser $user 表示您必须确保具有该身份的用户存在,否则将引发异常
  • -Replace 运算符的语法应该是@{preferredLanguage="DE"}
  • 除非使用 -PassThru 参数,否则 Set-ADUser 不会生成任何输出。
  • 如果你使用ForEach-Object,你可以在一个循环中完成所有这些

尝试使用以下代码更改代码:

(Get-Content C:\Temp\users.txt) | ForEach-Object {
    $account = Get-AdUser -Filter "SamAccountName -eq '$_'" -Properties Department, Mail, preferredLanguage -ErrorAction SilentlyContinue
    if ($account) {
        $account | Set-AdUser -Replace @{preferredLanguage="DE"} -PassThru |
        Select-Object SamAccountName,Department,Mail, preferredLanguage
    }
    else {
        Write-Warning "User '$_' does not exist"
    }
} | Export-CSV -Path C:\temp\outputUsers.csv -NoTypeInformation

希望有帮助

【讨论】:

  • 非常感谢您。它看起来比我的好多了。
猜你喜欢
  • 1970-01-01
  • 2010-10-02
  • 2014-09-01
  • 1970-01-01
  • 2012-07-30
  • 2019-11-18
  • 2019-02-12
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多