【问题标题】:Using multiple CSV columns to import data for mailbox export使用多个 CSV 列导入数据以进行邮箱导出
【发布时间】:2017-12-14 04:51:42
【问题描述】:

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

  1. 电子邮件地址和
  2. 用户登录名

我需要登录名来指定要导出的邮箱。

理想情况下,我希望它能够循环访问唯一的登录名并以 emailaddress.pst 格式导出邮箱(以下命令在输入静态时有效)但我似乎无法循环登录名正确。

我收到一个关于无效字符长度的错误,但是如果我只是尝试将它回显到控制台,它会给我每个名称作为我想要的单独条目,例如

用户 用户 用户

有什么建议吗?

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

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    我认为您可以通过避免使用索引并仅执行 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"
    }
    

    【讨论】:

    • 简洁,通俗易懂,我喜欢。无法在当前环境中测试,但明天可以。不完全知道您可以使用这样的列名,很高兴知道。
    • @morrisstu 这只是该对象的一个​​属性。我不会将其视为列名。如果您想查看对象的属性,请运行$File | Get-Member
    • 再好不过了,它更容易理解。这样就解决了。
    猜你喜欢
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2019-12-12
    • 2011-11-18
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多