我正在尝试使用PowerShell搜索AD属性otherTelephone
,如果值为null,则在序列中添加下一个数字。
例如,如果我添加一个名为John的新用户,我希望PowerShell检查AD并查看最后使用的otherTelephone
号码是999,因此它会自动为John添加1000。
到目前为止,我已设法导出AD中的用户列表及其各自的otherTelephone
号码:
Get-ADUser -Filter * -Properties otherTelephone |
select name, @{L='otherTelephone'; E={$_.otherTelephone[0]}}, |
Export-Csv c:\aduser.csv -NoTypeInformation
但我不确定如何从那里继续。
答案 0 :(得分:0)
正如@Paul在您的问题评论中建议的那样:从AD中读取电话号码,获取最高号码,然后递增。
$nextPhoneNumber = Get-ADUser -Filter * -Properties otherTelephone |
? { $_.otherTelephone } |
select -Expand otherTelephone |
% { [int]$_ } | sort -Desc | select -First 1
$nextPhoneNumber++
说明:
? { $_.otherTelephone }
:确保只处理具有非空属性的对象。select -Expand otherTelephone
:展开属性,以便获得电话号码流。这还会处理分配给用户的多个数字(该属性是多值的)。% { [int]$_ }
:将每个电话号码从字符串转换为整数,以便对它们进行数字排序。sort -Desc
:按降序对列表排序(第一个数字最高)。select -First 1
:从列表中选择第一个号码并丢弃其余号码。$nextPhoneNumber++
:将数字增加1。如果您需要为尚未填充otherTelephone
属性的所有现有用户执行此操作,您可以执行以下操作:
$users = Get-ADUser -Filter * -Properties otherTelephone
$nextPhoneNumber = $users | ? { $_.otherTelephone } |
select -Expand otherTelephone |
% { [int]$_ } | sort -Desc | select -First 1
$users | ? { -not $_.otherTelephone } | % {
$nextPhoneNumber++
Set-ADUser -Identity $_.DistinguishedName -Replace @{
'otherTelephone' = $nextPhoneNumber
}
}