N和E在此选择语句中表示的是什么

时间:2015-05-12 20:18:23

标签: arrays powershell select

foreach ($computer in $computername) {

      $context = New-Object -TypeName System.DirectoryServices.AccountManagement.PrincipalContext -ArgumentList $ctype, $computer

      $idtype = [System.DirectoryServices.AccountManagement.IdentityType]::SamAccountName

      $group = [System.DirectoryServices.AccountManagement.GroupPrincipal]::FindByIdentity($context, $idtype, 'Administrators')

      $group.Members | select @{N='Server'; E={$computer}}, @{N='Domain'; E={$_.Context.Name}}, samaccountName
}

有人可以描述这一行吗?什么是" N"和" E"代表什么?

select @{N='Server'; E={$computer}}, @{N='Domain'; E={$_.Context.Name}}, samaccountName

我想要的是输出看起来如下所示,我想标记管理组中的用户不是我们标准设置的一部分。我真的想忽略作为域帐户的SAM帐户,但现在标记它们是有效的。发生的事情是通过SAM帐户循环来创建此输出。但是当机器离线时我也需要这样做。

EXample Output

2 个答案:

答案 0 :(得分:3)

您正在寻找计算属性的关键和值的简写。 " N"是名称的缩写。 " L"或标签也用于代替名称。 " E"当然是 Expression

当您想要操作现有属性或作为添加属性的简单方法时,可以使用它们。这绝不是唯一的方法。

TechNet的Windows PowerShell Tips of the Week之一深入研究了一个很好的例子:

Get-ChildItem C:\Test | Select-Object Name, CreationTime,  @{Name="Kbytes";Expression={$_.Length / 1Kb}}

Length通常以字节为单位。这里使用计算的属性以允许更可人的可读数字。这是操纵属性的示例。

在您的情况下,看起来您正在获取成员列表并为每个成员创建输出,同时引用它所附加的服务器。据推测,信息通常不存在,因此计算出的属性。

答案 1 :(得分:0)

我很确定" E"是"表达"的简写和" N"是"姓名"

表达式是值,Name是本例中select语句的标题。