在PowerShell中获取Sharepoint 2010人员选取器列值的电子邮件地址

时间:2013-08-08 19:17:02

标签: powershell sharepoint-2010

我有一个列表,其中包含允许多个值的“人员/组”列。我也在该列中添加了一些用户。现在我想使用powershell命令获取这些用户的电子邮件地址。当我尝试使用:

显示列名时
Write-Host $item["To"]

结果如下:

70;#Anand, Amit 25;#Kumar, Prabhakar

它显示为字符串。如何在Powershell中获取人员字段电子邮件ID?我在网上搜索过,但找不到任何可靠的解决方案。

2 个答案:

答案 0 :(得分:0)

$input = "70;#Anand, Amit 25;#Kumar, Prabhakar 982;#Owen, Martin D."
$regex = "(?<id>\d+);#(?<name>[.\D]*)"

$input | Select-String $regex -AllMatches | % {
    ForEach($match in $_.Matches) {
        New-Object PSObject -Property @{
            Id = $match.groups["id"].value
            Name = $match.groups["name"].value
        }
    }
}

应该给你:

Id      Name                                                                              
--      ----                                                                              
70      Anand, Amit                                                                       
25      Kumar, Prabhakar 
982     Owen, Martin D.

我只在PowerShell 3.0中测试了这个,但我认为它应该在2.0中运行。

答案 1 :(得分:0)

你可以试试这个:

$web = get-spweb http://sptwd

"70;#Anand, Amit 25;#Kumar, Prabhakar".Split(",") | ForEach {
    $userValue = New-Object Microsoft.Sharepoint.SPFieldUserValue ($web,$_)
    $email = $userValue.User.Email
}

您可能需要在逗号后修剪空格