我有一个列表,其中有一个允许多个值的“个人/组”列。我还在该列中添加了一些用户。现在我想使用 powershell 命令获取这些用户的电子邮件地址。当我尝试使用以下方法显示列名时:
Write-Host $item["To"]
结果是这样的:
70;#Anand, Amit 25;#Kumar, Prabhakar
它像字符串一样显示。如何在 Powershell 中获取人员字段电子邮件 ID?我在网上搜索过,但找不到任何可靠的解决方案。
我有一个列表,其中有一个允许多个值的“个人/组”列。我还在该列中添加了一些用户。现在我想使用 powershell 命令获取这些用户的电子邮件地址。当我尝试使用以下方法显示列名时:
Write-Host $item["To"]
结果是这样的:
70;#Anand, Amit 25;#Kumar, Prabhakar
它像字符串一样显示。如何在 Powershell 中获取人员字段电子邮件 ID?我在网上搜索过,但找不到任何可靠的解决方案。
你可以试试这个:
$web = get-spweb http://sptwd
"70;#Anand, Amit 25;#Kumar, Prabhakar".Split(",") | ForEach {
$userValue = New-Object Microsoft.Sharepoint.SPFieldUserValue ($web,$_)
$email = $userValue.User.Email
}
您可能需要修剪逗号后的空格
$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 中使用。