web-dev-qa-db-ja.com

PowerShellを使用してCSVファイルをExchangeメールの連絡先に重複せずにインポートする

問題: Exchange管理コンソールの「メール連絡先」リストにかなりの数の人の情報が追加されましたが、すべてではありません。

概要: Excelの.csvファイルから数百人のリストをExchange管理コンソールに追加しようとしています(より具体的にはメールの連絡先)。 foreachステートメントの実行を停止させた可能性のある連絡先リストにすでに多数の連絡先が含まれている可能性がありますか?

私の質問:メンバーが存在するかどうかを確認するために実行できるコードはありますか?存在しない場合は、メンバーを追加しますか?

このコードをPowerShellで次の形式で実行しました。

Import-Csv .\computech.csv | foreach { New-MailContact -Name $_.displayname -FirstName $_.firstname -LastName $_.lastname -ExternalEmailAddress $_.mail -OrganizationalUnit $_.OrganizationalUnit}

不思議なことに、リストからかなりの数の人が追加されましたが、すべてではありませんでした。今すぐコードを実行しようとすると、次のエラーが発生します。

Import-Csv:メンバー「Aaron」はすでに存在しています。

「アーロン」はリストの最初のメンバーであるため、実行はそこですぐに停止します

私は以前にこのコードを使用してこれを試しました:

[PS] C:\Windows\system32>Import-Csv \\FILLER\MailboxBackups\contacts.csv | foreach-object{if (Get-MailContact -External
EmailAddress $_.ExternalEmailAddress){write-Host $_.ExternalEmailAddress 'is a duplicate entry!!!!'} else {New-MailConta
ct -Name $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}}

しかし、私は同じ「アーロン」がすでに存在するエラーを受け取りました笑。どんな助けでも大歓迎です


-------- UPDATE ------------エイリアスの競合が原因で、すべての連絡先が追加されたわけではないことがわかりました。エイリアスは「bob」のような一般的な名前で、すでに存在しているはずです。人々は通常、これを回避するために数字を使用しますか、それとも単純な名前の代わりにユーザーの電子メールアドレスを使用しますか?

3
Mike Kellogg

記事 powershellを使用したExchangeメール連絡先のインポート はこのコードを示唆しています:

Import-Csv .\ExternalContacts.csv|
    foreach-object{if (Get-MailContact -anr $_.name) {write-Host $_.name 'is a duplicate entry!!!'}     
    else {New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}
    }
1
harrymc

あなたの更新に答えるために、いくつかの組織は最初の最初の姓(私の場合はmmoore)を行い、それが取られた場合、それに番号を追加するか、最初の最初のミドルネームの最初の姓を使用しますが、それの変換は一般的な方法です。

したがって、インポート時に、挿入されようとしているエイリアスをチェックする条件を追加し、存在する場合は、一意のエイリアスが生成されるまで変換することができます。必要に応じてコードを追加することもできますが、私がどこに向かっているのかはご存知だと思います。

更新

これは通常ADユーザー名で行われるので、ADを実装する場合は、ADユーザー名をエイリアスとして割り当てることもできます。

0
MDMoore313