如何在结果集中添加变量作为列值?

How do I add a variable as a column value in a result set?

我有一个循环遍历 CSV 文件中的值的变量。由于 CSV 中每个值的循环 returns 结果集,我还希望在结果集中返回该值(变量)。我试图在我的 Select 语句中添加我的变量 $user,但它只显示在 header 列中并且我的值是空白或 {}.

这是循环代码:

$users = Get-Content C:\AD\ad_groups.txt

ForEach ($User in $users) 
{
    Get-ADGroupMember -Identity $user  -Server MyServerName| Select name,SamAccountName,$user 
}

您可能需要使用所谓的计算 属性。代替 $User,尝试将以下散列 table 作为 属性 值。 "Name" 可以缩短为 "N" 和 "Expression to "E"(没有这里看到的双引号),如果你觉得它是 necessary/preferred.

@{Name='User';Expression={$User}}

您可以像这样使用计算的 属性:

$userList = Get-Content C:\AD\ad_groups.txt
ForEach ($User in $userList) { 
    Get-ADGroupMember -Identity $user -Server MyServerName | 
        Select-Object name, SamAccountName, @{Name='user';Expression={$User}} 
}

您的代码可能只需要几个字符就可以正常工作。

你没有说 $User 的格式是什么,但是因为它是 -Identity 参数可以接受的,所以根据我的 the documentation, it must be one of the following (links to output object 属性 , 与代码交错 select 该值)...

Distinguished Name

Example: CN=saradavisreports,OU=europe,CN=users,DC=corp,DC=contoso,DC=com

Get-ADGroupMember -Identity $user  -Server MyServerName| Select name,SamAccountName,DistinguishedName

GUID (objectGUID)

Example: 599c3d2e-f72d-4d20-8a88-030d99495f20

Get-ADGroupMember -Identity $user  -Server MyServerName| Select name,SamAccountName,objectGUID

Security Identifier (objectSid)

Example: S-1-5-21-3165297888-301567370-576410423-1103

Get-ADGroupMember -Identity $user  -Server MyServerName| Select name,SamAccountName,objectSid

Security Accounts Manager (SAM) Account Name (sAMAccountName)

Example: saradavisreports

(sAMAccountName 属性 已经 select 编辑在原始代码中)

如果 $users 包含多种格式的标识符,或者您想保留传递给 Get-ADGroupMember 的确切文本,那么您将需要使用 select 的其他答案之一它作为 属性 使用 ScriptBlock.