locked
CSVリストを元にして電子メールアドレスを追加したい RRS feed

  • 質問

  • ユーザー名と追加したいアドレスにうまく変数が入らないのと、人数分ループ
    処理されるところがわからず・・・。

    CSVは以下にしています。
    User,E-Mail
    user1,user1@contoso.com
    user2.user2@contoso.com



    PowerShellは以下です。

    $Mailbox=Get-Mailbox "ユーザー名"
    $Mailbox.EmailAddresses +="追加したいアドレス"
    Set-Mailbox "ユーザー名" -EmailAddresses $Mailbox.EmailAddresses


    2018年5月31日 5:50

すべての返信

  • Set-Mailbox コマンドレットの使い方が間違っているのではないでしょうか。

    参考:
    https://technet.microsoft.com/ja-jp/library/bb123794%28v=exchg.160%29.aspx?f=255&MSPPError=-2147217396

    2018年6月1日 4:53
  • こちらもエンジニアで確認してから以前のとこに投稿しています。失礼ですが確認して指摘投稿ください。そちらの指摘は現在のExchangeServerのやり方です。まぁバージョン書かなかった当方も悪いのですが。ExchangeServer2007はaddがないので書き換えがいるのでこうなります。と、当方記載内容もそうなっています。

    2018年6月2日 12:35
  • どういったスクリプトでどういったエラーが出ているか教えていただけますでしょうか?

    環境が手元にないので試せてませんが、こんな感じですかね?

    $mbxs = Import-Csv xxxxx.csv
    foreach ($mbx in $mbxs) {
      $Temp = Get-Mailbox -Identity $mbx.User
      $Temp.EmailAddresses += "smtp:"+$mbx.'E-mail'
      Set-Mailbox -Instance $Temp
    }

    2018年6月3日 0:10
  • トコさん

    バージョン違い、失礼しました。

    ところでエンジニアというのはMSのエンジニアの方のことでしょうか?

    MSエンジニアのことであれば、当フォーラムは一般の有志によるもののため、エンジニアとの連携はありません。よって、情報の参照もできません。

    また「以前のとこ」とのことですが、複数の場所に同様の投稿を行うマルチポスト行為は各スレッドで情報共有されないまま議論が進んでしまうのでご遠慮ください。

    双方にスレッドへの案内を投稿していただき、どちらか一方に統合いただけますと幸いです。

    ■ 2007について
    一応、こちらのページではAddを使用しているようです。 + オペランドも使用できるようです。Set-Mailboxの指定の仕方は違っているので、こちらにあわせてみてはいかがでしょうか。

    Addが使えないのは、また別の要因かもしれませんね。

    https://technet.microsoft.com/ja-jp/library/bb123794%28v=exchg.80%29.aspx?f=255&MSPPError=-2147217396


    2018年6月4日 1:28
  • 言葉って難しいですね。USだともう少し楽ですが当方もそうですが修飾語つけると意味が曲解されてしまう・・・。
    常識的にマルチにはしていません。このエンジニアというの何もわかんないからここに書いたよ、ではなく、こち
    らもShellが動作するかは確認しています、という意味です。
    やきさんがそう思ったのかな?と思ったためです。


    この+とAddは同義語と理解しています。問題は全てGetした値に+して書き込みしないとだめという部分です。

    Getでとって編集してからSetで書き込むか・・と思ったのですが、スクリプト処理はこういう時にするんだよなぁ
    ・・と。

    そこで質問したしだいです。PowerShellたたけるとスクリプト作れるはまた別なので。(たいしたことではないじゃ
    んという言葉を返されるとなんとも・・ですが)

    $Temp = Get-Mailbox -Identity 
    ※$Temp.EmailAddresses.Add("smtp:john@secondaddress.contoso.com")
    ※$Temp.EmailAddresses += ("smtp:john@thirdaddress.contoso.com")
    Set-Mailbox -Instance $Temp

    この処理が終わったら
    次の人の処理しなさい、と。
    GetでCSVリストから取得とかCSVからSetで書くはたいしたことはないのですが、
    このループルーチンの書き方が不明でした。

    Genki Watanabeさんからもコメントいただけていますし、もう少し考えてみます。

    風邪引きつつでRes遅くなりすいみませんでした。

    2018年6月4日 2:47
  • やきです。

    ループはGenki Watanabeさん記載されているとおりです。$mbx に、import-csv でとってきた $mbxs の各行が入ります。

    ほぼ問題は起きないはずですが、ここでエラーになるとしたら
    ・CSVのエンコードが違う。「Import-CSV」の時に -Encoding が必要になるかも。
    ・パスに特殊文字がある。パスによっては 「-LiteralPath <CSVへのパス>」じゃないといけないかも。
    ・CSVファイルの内容がおかしい

    くらいでしょうか。
    もし質問文そのままコピペのCSVであれば、

    ---------------

    User,E-Mail
    user1,user1@contoso.com
    user2.user2@contoso.com

    ---------------

    の、User2の区切り文字がピリオドになっています。

    2018年6月4日 5:01