从Foreach中的2个阵列中选择

时间:2016-05-19 01:00:26

标签: powershell exchange-server

$foo有一个包含50个用户ID的列表。

$foo | foreach {
  Get-MailboxFolderPermission -Identity ($_.alias + ":\calendar") 
} | select user,accessrights

如何在$foo中选择用户ID,然后在同一行中同时拥有useraccessrights?上面得到的命令只是在$foo中列出了用户ID的用户和访问权限,但从来没有列出实际的用户ID,因此我无法确定哪个用户ID与该用户ID的日历的访问权限匹配。

1 个答案:

答案 0 :(得分:2)

使用正确的foreach循环并使用calculated property获取循环内的用户ID:

foreach($id in $foo) 
{
    Get-MailboxFolderPermission -Identity ($id.alias + ":\calendar") | Select-Object User,AccessRights,@{Name='UserID';Expression={$id}}
}

使用foreach循环而不是ForEach-Object cmdlet的原因是$_表达式块中的Select-Object不再引用原始$foo } element,但是来自Get-MailboxFolderPermission的当前项目。通过将当前$foo元素作为整个循环体内的命名变量($id),我们仍然可以从Select-Object引用它。