ActiveDirectory更改所有UPN

时间:2016-09-06 06:34:57

标签: powershell active-directory

我必须更改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

有没有人有想法?

1 个答案:

答案 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
}
相关问题