Powershell:用此活动目录脚本中的句点替换空格

时间:2014-03-13 10:17:44

标签: powershell active-directory smtp

很抱歉,如果这很简单,但我是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

2 个答案:

答案 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'))
    }
}