我在使用 PowerShell 脚本将基于电子邮件地址的 CSV 文件中的电话号码导入到 Active Directory 时遇到问题。 该表包含:
mail;telephoneNumber
[email protected];88888888
[email protected];99999999
这是我正在运行的代码,但它向我显示了一条错误消息,或者我不明白为什么会出现此消息:
Import-module ActiveDirectory
Import-CSV E: scripts list.csv |
ForEach-Object {
Write-Host "telephoneNumber $($_.telephoneNumber)"
Get-ADUser -Filter "mail -like '$($_.mail)'" |
Set-ADUser -telephoneNumber $_. telephoneNumber}
这是错误消息:
telephoneNumber
Set-ADUser: Unable to find a parameter corresponding to the name «telephoneNumber».
Character E: scripts employeeid.ps1:6: 14
+ Set-ADUser -telephoneNumber $_. telephoneNumber}
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-ADUser], ParameterBindingException
+ FullyQualifiedErrorId: NamedParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.SetADUser
注意:我是该学科的初学者
提前感谢您的帮助
我也尝试了这段代码,但仍然是同样的问题。
Import-module ActiveDirectory
Import-CSV "E:\scripts\liste.csv" | % {
$telephoneNumber = $_.telephoneNumber
$mail= $ail_.m
Set-ADUser $telephoneNumber -mail $mail
}
LDAP 属性
telephoneNumber
在 PowerShell 中称为 OfficePhone
,LDAP 属性 mail
有一个名为 EmailAddress
的 PowerShell 等效项。Set-ADUser
没有名为 telephoneNumber
的参数,但它确实 有 OfficePhone
,因此重写您的代码将是
Import-Module ActiveDirectory
Import-Csv -Path 'E:\scripts\list.csv' | ForEach-Object {
$user = Get-ADUser -Filter "mail -eq '$($_.mail)'" # or use PS equivalent 'EmailAddress'
if ($user) {
Write-Host "Setting telephoneNumber $($_.telephoneNumber) for $($user.Name)"
$user | Set-ADUser -OfficePhone $_.telephoneNumber
# if you do want to use LDAP property telephoneNumber, you can use below
# $user | Set-ADUser -replace @{telephoneNumber = $($_.telephoneNumber)}
}
else {
Write-Warning "Could not find user with EmailAddress $($_.mail)"
}
}
附注您发帖时犯了一些错别字:
E: scripts list.csv
缺少反斜杠$_. telephoneNumber
点和属性名称之间有一个空格