我有以下脚本 - 除了departmentNumber之外它有效。有什么想法吗?
# Import AD Module
Import-Module ActiveDirectory
# Import CSV into variable $users
$users = Import-Csv -Path C:\users.csv
# Loop through CSV file and update users if they exist
foreach ($user in $users) {
Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" - Properties * |
Set-ADUser -EmailAddress $($user.EmailAddress) -Title $($user.Title) -Office $($user.Office) -OfficePhone $($user.OfficePhone) -departmentNumber $($user.departmentNumber) }
修改
我使用“-Add”运算符尝试了以下操作:
Import-Module ActiveDirectory
$users = Import-Csv -Path C:\users.csv
foreach ($user in $users) {
Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * |
Set-ADUser -Add @{departmentNumber = "$($user.departmentNumber)"}
}
以下,使用“-Replace”运算符:
Import-Module ActiveDirectory
$users = Import-Csv -Path C:\users.csv
foreach ($user in $users) {
Get-ADUser -Filter "SamAccountName -eq '$($user.samaccountname)'" -Properties * |
Set-ADUser -Replace @{departmentNumber = "$($user.departmentNumber)"}
}
仍然没有运气 - 我的语法搞砸了吗?
答案 0 :(得分:2)
我正在快速浏览一下Set-ADUser的帮助:https://technet.microsoft.com/en-us/library/ee617215.aspx
我看到-Department的参数,但不是-DepartmentNumber
的参数在公司的结构中是否可以使用-Department?
对于自定义属性,您应该能够使用-Add参数
-Add @{otherTelephone='555-222-1111', '555-222-3333'; otherMobile='555-222-9999' }
为了使用-Add或-Replace,您需要使用哈希表作为输入而不是字符串。 这是我用来将字符串转换为单个项哈希表的一组快速命令:
$DeptNo = 'test'
$hash = @{}
$hash.Add('DepartmentNumber',$DeptNo)
$hash
$ hash的输出:
Name Value
---- -----
DepartmentNumber test
我认为你可以使用-Add $ hash来让它做你想做的事。
答案 1 :(得分:0)
这是我的代码,它使它工作:
Set-ADUser -Identity $samName -Add @{'departmentNumber'="$UserDept"}
重要的是要注意,如果没有任何内容,您只能使用-Add
否则使用-Replace
$UserDept
是一个数字,但引号使它成为一个字符串
并且该属性必须在其周围加上单引号。