我目前有一个文本文档,其中包含我们环境中的所有组及其具有修改成员资格的权限/访问权限的成员。
文本文档的格式如下:
group1
member1
member2
member3
blankline
group2
member4
member2
member1
blankline
group3
member6
blankline
我正在尝试在组中读取,然后验证每个成员是否实际上都在具有 -managedby
属性的组中。
$List = Get-Content $File
For ($i=0; $i -lt $List.length; $i++)
{
Get-qADGroup $List[$i]
$i += 1
If($List[$i] -eq " "){
Write-Host "test"
}
else{
do{
Write-Host $List[$i]
$i += 1
}until ($List[$i] -eq " ")
}
#$count = 0
#$i += $count + 1
}
这将给你留下一个对象$Groups
,该对象将包含每个组的记录,并且它的成员作为该记录中的一个数组,因此您可以执行foreach($group in $groups){get-qadgroup $group|compare-object $_ $group.members}
或类似操作。 以查找差异。
$List = gc $File
$Groups=@()
$Members=@()
$GroupName = $List[0]
$ii=1
while($Null -eq $Null){
if($List[$ii]){
$Members+=$List[$ii]
$ii++
}else{
break
}
}
$Group=[PSCustomObject]@{Group=$GroupName;Members=$Members}
$Groups+=$Group
$Blanks = for($i=0; $i -lt $list.count;$i++){if(!$List[$i]){$i}}
foreach($Blank in $Blanks){
$Members = @()
$GroupName = $List[$Blank+1]
$ii=2
while(($Blank+$ii) -le $List.Count){
if($List[$Blank+$ii]){
$Members+=$List[$Blank+$ii]
$ii++
}else{
$Group=[PSCustomObject]@{Group=$GroupName;Members=$Members}
$Groups+=$Group
break
}
}
}