首先:我是一个完全陌生的Powershell-脚本。
想通过powershell修改一些用户的属性 "preferredLanguage",这些用户是用txt-filetestUser000testUser001等写的。
我的第一次尝试是成为一个带有用户和一些属性的列表。
$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","[email protected]","DE""testUser0001","dept2","[email protected]"。
testUser000在preferredLanguestUser0001中有一个条目,但没有。当我完成 users.txt后,有超过100个用户在'preferredLanguage'中没有条目。
现在我想改变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上使用这个脚本。
只是一些事情。
Get-AdUser $user
意味着你必须确定有这个身份的用户存在,否则会产生异常。-Replace
经营者应 @{preferredLanguage="DE"}
-PassThru
参数。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
希望能帮到你