我必须更改Active Directory中的所有UPN。有些UPN是完全空的,有些是填充的。
现在我想用sAMAccountName
填充所有内容。
我的脚本如下所示:
# Import AD Module
Import-Module ActiveDirectory
# Import CSV into variable $userscsv
#$userscsv = import-csv C:\temp\rename\usernames.csv
$users = Import-Csv -Path C:\temp\rename\usernames.csv
# Loop through CSV and update users if the exist in CVS file
foreach ($user in $users) {
#Search in specified OU and Update existing attributes
Get-ADUser -Filter "sAMAccountName -eq '$($user.samaccountname)'"
Set-ADUser -userPrincipalName $($users.samaccountname)
}
我收到错误代码:
Get-ADUser : Der Suchfilter wurde nicht erkannt Bei C:\TEMP\RENAME\User-Rename.ps1:13 Zeichen:12 + Get-ADUser <<<< -Filter "sAMAccountName -eq '$($user.samaccountname)'" + CategoryInfo : NotSpecified: (:) [Get-ADUser], ADException + FullyQualifiedErrorId : Der Suchfilter wurde nicht erkannt,Microsoft.ActiveDirectory.Management.Commands.GetADUser
有没有人有想法?
答案 0 :(得分:0)
我不建议将UPN设置为SamAccountName。这不是它的supposed to be。
如果必须这样做,则不能在过滤器中使用子表达式。将值分配给变量并在过滤器表达式中使用它。您还需要将用户对象传递给Set-ADUser
以使cmdlet可以使用:
foreach ($user in $users) {
$acct = $user.SamAccountName
Get-ADUser -Filter "sAMAccountName -eq '$acct'" |
Set-ADUser -userPrincipalName $acct
}