在Powershell中,如何传递IEnumerable参数?

时间:2013-03-06 19:00:26

标签: powershell lync

我正在尝试使用Microsoft.Lync.Model.Contact.GetContactInformation()方法。有两个版本,一个采用普通枚举,另一个采用具有多个值的IEnumerable。

http://msdn.microsoft.com/en-us/library/lync/hh347568.aspx

我可以半成功地使用第一个版本(直到我尝试检索没有值的第一个版本),但我无法理解我应该如何传递多个参数。

$contactInfo = $c[$c.Count - 1].Participants[1].Contact.GetContactInformation([int[]]("FirstName", "LastName", "DisplayName", "PrimaryEmailAddress"))

(以上不起作用。)

有人能否朝着正确的方向推动我?

3 个答案:

答案 0 :(得分:4)

最简单的语法将与您现在拥有的语法相近。该方法采用ContactInformationType值的枚举,因此您的演员应该是一组数组,而不是int

此外,您可以使用$foobar[-1]作为$foo[$foo.Count - 1]的糖,即获取最后一个元素。

$contactInfo = $c[-1].Participants[1].Contact.GetContactInformation([Microsoft.Lync.Model.ContactInformationType[]] @("FirstName", "LastName", "DisplayName", "PrimaryEmailAddress"))

答案 1 :(得分:2)

我认为如果您尝试以下内容将会有效:

$contactInfo = $c[$c.Count - 1].Participants[1].Contact.GetContactInformation(
                [int[]](
                        [int]Microsoft.Lync.Model::ContactInformationType.FirstName,
                        [int]Microsoft.Lync.Model::ContactInformationType.LastName,
                        [int]Microsoft.Lync.Model::ContactInformationType.DisplayName,
                        [int]Microsoft.Lync.Model::ContactInformationType.PrimaryEmailAddress))

答案 2 :(得分:1)

该方法本身可能不知道“FirstName”是什么。尝试创建枚举值的数组,例如:

$information = [Microsoft.Lync.Model.ContactInformationType]::FirstName, [Microsoft.Lync.Model.ContactInformationType]::LastName, [Microsoft.Lync.Model.ContactInformationType]::DisplayName, [Microsoft.Lync.Model.ContactInformationType]::PrimaryEmailAddress
$contactInfo = $c[$c.Count - 1].Participants[1].Contact.GetContactInformation($information)