我需要通過一個正則表達式查詢,他們的顯示名稱的末尾尋找「IM」或「(IM)」,然後將其刪除的一堆用戶。我將首先進行備份導出。PowerShell正則表達式顯示名稱
我已經使用.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
啊......所以這就是爲什麼我張貼......乾杯restless1987。你會建議更好的方法嗎? – Toybits