正在PowerShell中获取Sharepoint 2010 PeoplePicker列值的电子邮件地址

正在PowerShell中获取Sharepoint 2010 PeoplePicker列值的电子邮件地址,powershell,sharepoint-2010,Powershell,Sharepoint 2010,我有一个列表,其中有一个“个人/组”列,允许多个值。我还在该专栏中添加了一些用户。现在,我想使用powershell命令获取这些用户的电子邮件地址。当我尝试使用以下命令显示列名时: Write-Host $item["To"] 结果是: 70;#Anand, Amit 25;#Kumar, Prabhakar 它像字符串一样显示。如何在Powershell中获取person字段电子邮件id?我在网上搜索过,但找不到任何固溶体 $input = "70;#Anand, Amit 25;#Kum

我有一个列表,其中有一个“个人/组”列,允许多个值。我还在该专栏中添加了一些用户。现在,我想使用powershell命令获取这些用户的电子邮件地址。当我尝试使用以下命令显示列名时:

Write-Host $item["To"]
结果是:

70;#Anand, Amit 25;#Kumar, Prabhakar
它像字符串一样显示。如何在Powershell中获取person字段电子邮件id?我在网上搜索过,但找不到任何固溶体

$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
        }
    }
}
我只在PowerShell 3.0中测试过这个,但我认为它应该在2.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
}

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

Hi Martin,谢谢您的回复,但我需要电子邮件地址。。结果应该和阿南德一样。Amit@gmail.com,库马尔。Prabhakar@gmail.com...would请你指导我,这将有点难,你需要实例化一个SPUserfieldvalue,然后从那里得到一个SPUser,然后你可以得到电子邮件。
$web = get-spweb http://sptwd

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