Displaynameの最後に 'IM'または '(IM)'を検索する正規表現クエリを使用して多数のユーザーを配置し、それを削除する必要があります。私はバックアップのために最初にもちろん輸出されるでしょう。PowerShell Regex DisplayName
私は、.containsメソッドを使用していますが、私が使用しているのであれば、TimやImogenのものは私に少し迷惑をかけるかもしれません。
$users = Get-DistributionGroupMember 'DGName' | ? { $_.RecipientType -eq 'UserMailbox' }
$mailboxes = $users | Get-Mailbox
$output = @()
$mailboxes | Select-Object Alias, DisplayName | Export-Csv D:\Scripts\PreDisplayNames.csv -NoTypeInformation
foreach ($mb in $mailboxes){
if ($mb.DisplayName.EndsWith(" (IM)")){
$newString = $mb.DisplayName.TrimEnd(" (IM)")
$newStringTD = $mb.DisplayName.TrimEnd(" (IM)") + " (TD)"
$resultstring = "Setting DisplayName to $newString"
$mb | Set-Mailbox -DisplayName $newString -WhatIf
}
elseif($mb.DisplayName.EndsWith(" IM")){
$newString = $mb.DisplayName.TrimEnd(" IM")
$newStringTD = $mb.DisplayName.TrimEnd(" (IM)") + " (TD)"
$resultstring = "Setting DisplayName to $newString"
$mb | Set-Mailbox -DisplayName $newString -WhatIf
}
else{
$newString = 'DNIncorrect'
$resultstring = 'Incorrect DisplayName'
}
$props = [ordered]@{
'DisplayName' = $mb.DisplayName
'NewDisplayName' = $newString
'NewDisplayName TD' = $newStringTD
}
$object = New-Object -TypeName PSObject -Property $props
$output += $object
}
$output | Export-Csv "D:\scripts\DisplayNames.csv" -NoTypeInformation
コード貼り付けに問題がありましたが回答した可能性があります。 '$ newString = $ string.DisplayName.TrimEnd("(IM) ")' ...だからIFを繰り返して、最後にelseを使ってその慣習に合っていないものを世話してください。 ) – Toybits
警告: '.trim()'はすべての一致する文字を削除します!だからMIでも削除されます! – restless1987
ああ...だからこれが私が投稿した理由です。歓声は、restless1987。あなたはよりよい方法を提案しますか? – Toybits