很抱歉,如果这很简单,但我是PowerShell的新手。
我目前正在使用以下脚本将proxyAddress值添加到Active Directory中的用户:
Get-ADUser -Filter * -SearchBase 'OU=myou,DC=mydc' -Properties proxyaddresses |
Foreach {Set-ADUser -identity $_ -Add `
@{'ProxyAddresses'=@(("{0}{1}@{2}"-f 'smtp:', $_.name, 'mydomain.com'),("{0}{1}. {2}@{3}" -f 'SMTP:', $_.givenName, $_.Surname, 'mydomain.com'))} }
但是,对于接下来的几个OU,givenName和surname值为空,名称将以下面的格式“Firstname Surname”存储在displayName中。
如何修改脚本,而不是采用givenName period Surname,它将采用displayName并用句点替换空白?
E.G。 具有displayName“Joe Bloggs”的用户将获得值SMTP:Joe.Bloggs@mydomain.com
答案 0 :(得分:0)
未经测试,但这样的事情可能是:
Get-ADUser -Filter * -SearchBase 'OU=myou,DC=mydc' -Properties proxyaddresses,displayname |
Foreach {
$ProxyAddresses = @("{0}{1}@{2}"-f 'smtp:', $_.name, 'mydomain.com')
if ($_.surname)
{ $ProxyAddresses += "{0}{1}. {2}@{3}" -f 'SMTP:', $_.givenName, $_.Surname, 'mydomain.com'}
else
{
$UserPart = $_.DisplayName.trim().replace(' ','.')
$ProxyAddresses += "{0}{1}@{2}"-f 'smtp:', $UserPart, 'mydomain.com'
}
}
Set-ADUser -identity $_ -Add @{'ProxyAddresses'= $ProxyAddresses }
答案 1 :(得分:0)
尝试这样的事情。对displayname值进行简单的替换操作,并进行一些调整。
#Include displayname property
Get-ADUser -Filter * -SearchBase 'OU=myou,DC=mydc' -Properties displayname, proxyaddresses |
Foreach {
#Used ($_.displayname.trim() -replace ' ', '.') and modified string format.
Set-ADUser -identity $_ -Add @{
'ProxyAddresses'=@(("{0}{1}@{2}"-f 'smtp:', $_.name, 'mydomain.com'),("{0}{1}. {2}@{3}" -f 'SMTP:', ($_.displayName.trim() -replace ' ', '.'), 'mydomain.com'))
}
}