使用get-adgroupmember为只有一个成员的组获取奇怪的结果

时间:2014-12-16 22:09:28

标签: powershell active-directory

我有一个脚本,它从SQL Server中的表中读取组列表,并使用组成员填充另一个表。这用作SQL安全审核的一部分。该脚本工作正常,但有一个例外。如果该组只有一个成员,则数据不正确 SamAccountName应为X012345,名称应为Jane Doe,但我得到的是“D”和“”。

以下是代码的一部分:

foreach ($groupID in $dbdata)
{
$Scan_Date = $dbdata.Scan_Date[$dn]
$group = $dbdata.groupID[$dn]
$Group_Name = $dbdata.Group_Name[$dn]
[array]$groupusers = get-adgroupmember $Group_Name -Recursive | select SamAccountName, name
#$groupusers
$gn = 0
[string]$col1 = ""
[string]$col2 = ""
    foreach ($name in $groupusers)
    {
    $groupusers[$gn]
    $col1 = $groupusers.SamAccountName[$gn]
    $col2 = $groupusers.name[$gn]
    $col2 = $col2.replace("'","`'`'")
 write-host $Group_Name, $col1, $col2
$query = @"
INSERT INTO $ssi_table
           ([GroupID]
           ,[Scan_Date]
           ,[Group_Name]
           ,[User_ID]
           ,[User_Name])
     VALUES ('$Group_Name', '$Scan_Date', '$Group_Name', '$col2', '$col3')
"@
Run-SqlQuery -Query $query -Database $ssi_database -Server $ssi_instance

    $gn = $gn + 1
    }

1 个答案:

答案 0 :(得分:0)

如何改变:

$col1 = $groupusers.SamAccountName[$gn]
$col2 = $groupusers.name[$gn]

为:

$col1 = $groupusers[$gn].SamAccountName
$col2 = $groupusers[$gn].name

对于单个值,您将从SamAccountName / name获取“$ gn”字符。

还有一件事,$ col3来自哪里?
您为$ col1和$ col2赋值,但将$ col2和$ col3插入DB 这是一个错字吗?