【发布时间】:2015-05-29 10:20:41
【问题描述】:
我的脚本在这里:
$Results = @()
Get-Mailbox | % {
$o = New-Object -Type PSCustomObject -Property @{
'DisplayName' = $_.DisplayName
'alias' = $_.alias
'UserPrincipalName' = $_.UserPrincipalName
'PrimarySmtpAddress' = $_.PrimarySmtpAddress
'PrimaryProxyAddress' = ($_.EmailAddresses) -cmatch "SMTP:" -replace '^smtp:' -join ' '
}
$i = 1
$_.EmailAddresses -cmatch "smtp:" | % {
$o | Add-Member -Type NoteProperty -Name "OtherProxyAddress$i" `
-Value ($_ -replace '^smtp:')
$i++
}
$Results += $o
}
$results| ConvertTo-Csv -Delimiter "`t" -NoTypeInformation | clip
问题是当我转换为 CSV 时。转换为 CSV 时,第一个邮箱需要多少个OtherProxyAddress。如果第一个邮箱中有两个OtherProxyAddress,它将使用它并为 CSV 文件创建标题。但是,某些邮箱可能有超过 2 个OtherProxyAddress 字段。在这种情况下,当我在 Excel 中打开 CSV 时,我错过了包含两个以上 OtherProxyAddress 字段的邮箱的其他条目。
我希望能够以 CSV 格式捕获,因此我可以将顶部的足够标题粘贴到 Excel 中,以匹配具有最多 OtherProxyAddress 字段的邮箱。
【问题讨论】:
-
您打算如何处理导出的数据?如果要导出为 CSV,通常创建具有可变数量属性的对象不是一个好主意。您可以通过使用(不同的)分隔符连接元素来创建“多值”字段,以便在重新导入数据时轻松拆分元素。
-
附录:将数据粘贴到 Excel 时,您可以使用
Text to Columns来拆分具有分隔值的列。您只需要确保数据列右侧有足够的空白列(这样您就不会覆盖其他值)。 -
一开始我也觉得有些不对劲。你有一个名为
$UserPrincipalName的变量,但我看不到你在哪里填充它。 -
@Matt 这是我之前回答中的复制/粘贴错误。在这里和那里固定。
标签: powershell powershell-3.0 office365 export-to-csv