2017-12-13 10 views
1

私は数百のメールボックスを.PSTファイルにエクスポートしようとしています。私はエクスポートするメールボックスを指定するには、ログイン名を必要とする 複数のCSV列を使用してメールボックスエクスポートのデータをインポートする

CSVが

  1. E-Mailである2つのカラムを持つファイルを持っている、と
  2. ユーザーログオン名。

    固有のログイン名を繰り返してメールアドレスをmailaddress.pstという形式でエクスポートするのが理想的です(下記のコマンドは静的に入力しても動作します)が、サイクルできないようですログイン名を正しく入力してください。

    私は単に私が例えば

     
    AUser 
    BUser 
    CUser 
    

    何かアドバイスをしたいと思いとして、それは別のエントリとして私にそれぞれの名前を与え、コンソールにそれをエコーし​​ようとする場合、私は、しかし、無効な文字の長さに関するエラーが出ますか?

    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; 
    
    $File = Import-Csv "sourcefile.csv" 
    $EmailAddr = @($File | select -ExpandProperty "E-Mail Address") 
    $index = 0 
    $ADLogonName = @($File | select -ExpandProperty "User Logon name") 
    
    foreach ($addr in $EmailAddr) { 
        New-MailboxExportRequest -Mailbox $ADLogonName[$index] -FilePath \\networkshare\$addr.pst 
        $index++ 
    } 
    

答えて

5

私はあなたがインデックスを回避し、ただのforeachを行うことで、あなたの問題を解決することができると思います。そうすれば、それぞれのユーザーログオン名と電子メールアドレスが一致することになります($Entry)。

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn 
$File = Import-Csv "sourcefile.csv" 
foreach ($Entry in $File) 
{ 
    New-MailboxExportRequest -Mailbox $Entry.'User Logon name' -FilePath "\\networkshare\$($Entry.'E-Mail Address').pst" 
} 
+0

簡潔でわかりやすく、私はそれが好きです。現在の環境ではテストすることはできませんが、明日は可能になります。そのような列名を使用できることを十分に認識していませんでした。 – morrisstu

+0

@morrisstuそれはそのオブジェクトの単なるプロパティです。私はそれをカラム名とは考えていません。どのプロパティがオブジェクト上にあるかを見たい場合は、 '$ File | Get-Member'。 –

+0

もう一度やり直しても、理解しやすくなります。それがそれを解決しました。 – morrisstu

関連する問題