Powershell 访问表达式块中的名称值

Powershell 访问表达式块中的名称值,powershell,calculated-columns,Powershell,Calculated Columns,是否有方法获取表达式块内计算列的列名值? 我想将自定义列添加到选择列,但我不想在名称和表达式部分重复组名以避免键入错误。使用多个变量都不是干净的方法 ..., @{Name="Administrators";Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group "Administrators"}}, @{Name="Domain Admins";Express

是否有方法获取表达式块内计算列的列名值?
我想将自定义列添加到
选择列
,但我不想在名称和表达式部分重复组名以避免键入错误。使用多个变量都不是干净的方法

...,
@{Name="Administrators";Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group "Administrators"}},
@{Name="Domain Admins";Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group "Domain Admins"}},
@{Name="Enterprise Admins";Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group "Enterprise Admins"}},
@{Name="Schema Admins";Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group "Schema Admins"}}

否-一个
表达式
脚本块不知道它在上下文中的封闭哈希表,因此它无法查询该哈希表的
名称

但是,您可以通过提前声明属性名称数组并在
名称
表达式
条目中引用它来减少重复:

$propNames = 'Administrators', 'Domain Admins', 'Enterprise Admins', 'Schema Admins'

... | Select-Object `
  @{Name=$propNames[0]; Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group $propNames[0]}},
  @{Name=$propNames[1]; Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group $propNames[1]}},
  @{Name=$propNames[2]; Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group $propNames[2]}},
  @{Name=$propNames[3]; Expression={Test-ADGroupMembership -User $_.sAMAccountName -Group $propNames[2]}}

如果您喜欢冒险,可以自动创建哈希表:

$calcProps =
 ('Administrators','Domain Admins','Enterprise Admins','Schema Admins').ForEach({
  @{
    Name = $_
    Expression = [scriptblock]::Create(
      'Test-ADGroupMembership -User $_.sAMAccountName -Group "{0}"' -f $_
    )
  }
})

... | Select-Object $calcProps