我创建了一个包含所有组名的CSV。以下脚本从“group.csv”中读取所有组名称,并列出组和成员。
脚本:
Add-PSSnapin Quest.ActiveRoles.ADManagement
$csv = Get-Content "f:\Temp\group.csv"
$result = $csv | foreach-object {
$group=$_
get-qadgroupmember "$_" -sizelimit 0 -indirect | select-object samaccountname,@{n="GroupName";e={$group}}
}
$result | export-csv f:\temp\groupandmem.csv -notypeinformation
“group.csv”中有超过1000个组,每个组中有很多成员。脚本的执行因内存问题而停止,并且没有任何内容写入groupandmem.csv,因为这是最后完成的。
我有以下问题:
有可能: - 对于“group.csv”中的每个组,从CSV列出该组,在AD中搜索该组,显示成员并将组名称和成员写入用户组andmem.csv。对“group.csv”中的所有组执行此操作。
- groupandmem.csv填写如下:
第1行组,member1,members2,members3 .......
第2行group2,member1,members2等。
答案 0 :(得分:1)
如果您开始为变量分配内容,那么您将阻止PowerShell将用户从管道(AD)的一端“流式传输”到另一端(CSV文件)。相反,构建您的管道如下:
Get-Content "f:\Temp\group.csv" | foreach-object {
$group = $_ # grab current group name
get-qadgroupmember $group -sizelimit 0 -indirect | `
select-object samaccountname,@{n="GroupName";e={$group}}
} | export-csv f:\temp\groupandmem.csv -notypeinformation
现在从头到尾有一个真正的“管道”:csv | foreach | get | transform | export
在此之前,您通过将所有内容分配到变量中,然后将其传递到下一个命令来进行备份。
更新:将$ group添加到当前捕获组名称(行)