Мне нужно добавить кучу пользователей через запрос регулярного выражения, который ищет «IM» или «(IM)» в конце своего DisplayName, а затем удаляет его. Я буду экспортировать сначала, конечно, для резервного копирования.PowerShell Regex DisplayName
Я использовал метод .contains, но если я использую это, любой Тим или Имоджен могут немного рассердиться на меня.
$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) ")' ... так ЕСЛИ через любую итерацию, а затем еще одну, чтобы позаботиться о том, что не соответствует этому соглашению (это большая среда) – Toybits
ВНИМАНИЕ: '.trim()' удаляет ВСЕ подходящие символы! Поэтому даже 'MI' будет удален! – restless1987
Ahh .... так вот почему я разместил ... ура беспокоит1987. вы бы предложили лучший способ? – Toybits