2016-11-15 5 views
-2

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 
+0

コード貼り付けに問題がありましたが回答した可能性があります。 '$ newString = $ string.DisplayName.TrimEnd("(IM) ")' ...だからIFを繰り返して、最後にelseを使ってその慣習に合っていないものを世話してください。 ) – Toybits

+0

警告: '.trim()'はすべての一致する文字を削除します!だからMIでも削除されます! – restless1987

+0

ああ...だからこれが私が投稿した理由です。歓声は、restless1987。あなたはよりよい方法を提案しますか? – Toybits

答えて

0

Theresのここでの正規表現の必要はありませんが、メールボックス

$mailboxes = $users | Get-Mailbox | Where-object {($_.DisplayName -like "*IM") -or ($_.DisplayName -like "*(IM)")}

+0

ありがとうございました。大規模な環境です。大会に従わず、IMで終わる名前を持つ可能性は非常に低いですので、あなたはおそらく正しいでしょう。 – Toybits

+0

IMまたはIMが常に大文字であることを確認できますか?あなたの偽陽性の数を排除するはずです。また、大会に言及していますが、私は元の質問に1つも見えないと思います。合唱をするrあなたに合っていないものを無視させる正規表現(または、手動でレビューするIMを持っている一致しない名前のレポートを生成する) –

+0

もう一度Mikeに乾杯。私は本当にクリケットについて知りませんでした。私は本当に助けを必要とします。慣習では、私は彼らがIMまたは(IM)で終わるべきであるが、私がグループをターゲットにしているので、いくつかの人がそうでない場合に備えて確かめたいと思った。私はあなたが前に書いたことを思っています。そして、あなたのようなものの代わりにclikeを使うと、トリックをやろうとしています。 – Toybits

0

を収集するときは、まだ私は通常に次を使用し、正規表現を望んでいた場合は、単にあなたのオブジェクトをフィルタリングする様を使用特定の単語の正規表現を生成します。それはあなたの状況のた​​めに働くかもしれません。

$Eliminate = @("bak", "error", "research","Retry") 
[regex]$eliminate_regex = '(?i)(' + (($Eliminate | foreach { [regex]::escape($_) }) -join "|") + ')' 
関連する問題