将两个 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 一个对象而不是数组。