将变量中的列添加到Select-Object结果中

时间:2015-10-29 07:02:37

标签: powershell

以下脚本检查指定OU中的邮箱,以确定默认权限设置为“所有者”的用户。我已经尝试了所有内容添加列" Name"从变量$ Mailbox到Select-Object导致以下代码。结果将添加一个列标题,并将第一个结果名称作为标题。如果有多个结果,则找到的第一个名称将是列标题,其他列的列为空白。有没有办法添加"名称"从变量$ Mailbox到Select-Object结果的列?

$AllMailBox = Get-Mailbox   -OrganizationalUnit "XXXXXXXXXX.com/DomainUsers/Users" -resultsize unlimited
ForEach ($MailBox in $AllMailbox) {Get-mailboxfolderpermission $Mailbox | Where-object {$_.User -match "Default" -AND $_.AccessRights -match "Owner"} | Select-Object  Identity, AccessRights, $MailBox.Name} 

2 个答案:

答案 0 :(得分:9)

而不是

Select-Object  Identity, AccessRights, $MailBox.Name} 

添加此

Select-Object  Identity, AccessRights, @{l="Name";e={$MailBox.Name}}} 

您可以在此处阅读有关自定义表格的更多信息https://technet.microsoft.com/en-us/library/ee692794.aspx?f=255&MSPPError=-2147217396

答案 1 :(得分:1)

$MailBox.Name生活在外部范围内。它不是Get-mailboxfolderpermission返回的商品的有效属性。

您可以使用Select-Object中的计算属性向结果中添加其他数据:

{Get-mailboxfolderpermission $Mailbox | Where-object {$_.User -match "Default" -AND $_.AccessRights -match "Owner"} | Select-Object  Identity, AccessRights,@{Name="Name"; Expression={$MailBox.Name}}

计算属性由哈希表声明,键为:

  • Name - 属性的名称
  • Expression - 返回值的脚本块

参见"例4" here获取计算属性的另一个示例。