将两个 Powershell 命令的输出添加到数组中
Add Output of two Powershell commands into an Array
我一直在尝试弄清楚这在 Powershell 中是否可行。我正在尝试将所有用户及其电子邮件地址的列表从 Outlook 全局地址列表中提取到一个数组中,因此生成的输出将如下所示:
Alice Peters petersa@wedsite.tld
Bob Jackson jackson@website.tld
etc
我目前可以使用以下方法提取信息:
[Microsoft.Office.Interop.Outlook.Application] $galSearch = New-Object -ComObject Outlook.Application
$search = @($galSearch.Session.GetGlobalAddressList().AddressEntries | ForEach-Object {$_.GetExchangeUser().Name; $_.GetExchangeUser().PrimarySmtpAddress})
$search
如您所料,结果格式如下:
Alice Peters
petersa@wedsite.tld
Bob Jackson
jackson@website.tld
etc
有没有办法让它们成对而不是一个在另一个上面?
我的 Outlook 在 GAL 中没有任何内容,所以我无法验证我的建议。
如果对象类型支持字符串处理,只需将两个结果合并为一个字符串即可。
ForEach-Object {
$_.GetExchangeUser().Name + ' ' +
$_.GetExchangeUser().PrimarySmtpAddress
}
否则,请先尝试转换为字符串。
ForEach-Object {
($_.GetExchangeUser().Name).ToString() + ' ' +
($_.GetExchangeUser().PrimarySmtpAddress).ToString()
}
或者您可以改为创建哈希表。
或者,正如 Mathias 在他的评论中指出的那样,最简单的解决方案是只选择属性。
这将 return 一个对象而不是数组。
我一直在尝试弄清楚这在 Powershell 中是否可行。我正在尝试将所有用户及其电子邮件地址的列表从 Outlook 全局地址列表中提取到一个数组中,因此生成的输出将如下所示:
Alice Peters petersa@wedsite.tld
Bob Jackson jackson@website.tld
etc
我目前可以使用以下方法提取信息:
[Microsoft.Office.Interop.Outlook.Application] $galSearch = New-Object -ComObject Outlook.Application
$search = @($galSearch.Session.GetGlobalAddressList().AddressEntries | ForEach-Object {$_.GetExchangeUser().Name; $_.GetExchangeUser().PrimarySmtpAddress})
$search
如您所料,结果格式如下:
Alice Peters
petersa@wedsite.tld
Bob Jackson
jackson@website.tld
etc
有没有办法让它们成对而不是一个在另一个上面?
我的 Outlook 在 GAL 中没有任何内容,所以我无法验证我的建议。
如果对象类型支持字符串处理,只需将两个结果合并为一个字符串即可。
ForEach-Object {
$_.GetExchangeUser().Name + ' ' +
$_.GetExchangeUser().PrimarySmtpAddress
}
否则,请先尝试转换为字符串。
ForEach-Object {
($_.GetExchangeUser().Name).ToString() + ' ' +
($_.GetExchangeUser().PrimarySmtpAddress).ToString()
}
或者您可以改为创建哈希表。
或者,正如 Mathias 在他的评论中指出的那样,最简单的解决方案是只选择属性。 这将 return 一个对象而不是数组。