使用多个CSV列导入邮箱导出数据

时间:2017-12-13 20:23:13

标签: powershell csv

我尝试将几百个邮箱导出到.PST文件。我有一个包含两列

的CSV文件
  1. 电子邮件地址,
  2. 用户登录名
  3. 我需要登录名来指定要导出的邮箱。

    理想情况下,我希望能够循环访问唯一的登录名并使用emailaddress.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++
    }
    

1 个答案:

答案 0 :(得分: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"
}