PowerShell-更改AD属性时出错
运行PowerShell脚本以更新用户属性。我正在使用一个测试用户开始,但一切似乎都符合要求。我尝试将列表文件作为Excel和CSV,但得到了相同的错误。为了简单起见,我尽可能地将数据与广告属性进行匹配。我错过了一些东西,但看不见它在哪里 Excel\CSV数据: PowerShell代码:PowerShell-更改AD属性时出错,powershell,active-directory,Powershell,Active Directory,运行PowerShell脚本以更新用户属性。我正在使用一个测试用户开始,但一切似乎都符合要求。我尝试将列表文件作为Excel和CSV,但得到了相同的错误。为了简单起见,我尽可能地将数据与广告属性进行匹配。我错过了一些东西,但看不见它在哪里 Excel\CSV数据: PowerShell代码: $users2 = import-excel "c:\orgstafflist2.xlsx" foreach ($user in $users2) {get-aduser -filte
$users2 = import-excel "c:\orgstafflist2.xlsx"
foreach ($user in $users2) {get-aduser -filter "SamAccountName -eq '$($user.samaccountname)'" | set-aduser -displayname $($user.name) -surname $($user.last) -givenname $($user.first) -replace @{manager=$($user.manager)} -description $($user.description)}
错误消息:
set-aduser : The name reference is invalid
At line:1 char:97
+ ... ntname)'" | set-aduser -displayname $($user.displayname) -surname $($user.la ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=John Doe,OU=...riese,DC=office:ADUser) [Set-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:8373,Microsoft.ActiveDirectory.Management.Commands.SetADUser
第一个问题是您尝试引用的displayname列的名称有误。第二个问题是您需要为经理提供广告用户可分辨名称
$users2 = import-excel "c:\orgstafflist2.xlsx"
foreach ($user in $users2)
{
get-aduser -filter "SamAccountName -eq '$($user.samaccountname)'" |
set-aduser -displayname $($user.displayname) -surname $($user.last) -givenname $($user.first) -replace @{manager = $(get-aduser $user.Manager).distinguishedname} -description $($user.description)
}
你也应该考虑斯普林特的可读性。
$users2 = import-excel "c:\orgstafflist2.xlsx"
foreach ($user in $users2)
{
$UserParam = @{
displayname = $user.displayname
surname = $user.last
givenname = $user.first
replace = @{manager = (get-aduser $user.Manager).distinguishedname}
description = $user.description
}
get-aduser -filter "SamAccountName -eq '$($user.samaccountname)'" | set-aduser @UserParam
}
您不能将
manager
属性设置为任何任意字符串,如“Jane Doe”-它需要是对目录中现有对象的引用。谢谢!!!事实上,我发现我的问题后,张贴这一点,但你是正确的。