我正在尝试创建一个脚本,以检查A组的成员是否不是bg组的成员,以及它们是否不是bg组的成员,然后将其名称输出到log / excel工作表中-我得到了它输出的是这些组的成员的姓名,但我无法获得多个组的相反名称。如果我可以制作一个excel工作表,该工作表返回哪个用户是一列中组的一部分,而其他用户又是另一列中的组,那将很好,但是excel表单输出存在问题。这是我到目前为止完成的代码。任何帮助表示赞赏
$logfile = "C:\Users\x\temp\outputgroupmembers.log"
$group1 = get-adgroup group-a
$checkgroups = Get-ADGroup -filter 'Name -like "AREA_*"' | Select-Object Name
Foreach ($Usr In Get-ADGroupMember -Identity $group1.DistinguishedName)
{
# If the 'MemberOf' array of $Usr's group memberships contains 'group1', then...
If ((Get-ADUser $Usr.SamAccountName -Properties MemberOf).MemberOf -contains $checkgroups)
{
try{
# output user information to document log'.
$displayname = get-aduser $Usr.SamAccountName -Properties DisplayName | select -expand displayname
write-output $Usr.SamAccountName $displayname >> $logfile
}
catch {
write-output "Domain users group NOT output to logfile" >> $logfile
}
}}
答案 0 :(得分:0)
看看这个被剪掉的东西。我修改了代码,并添加了第二个foreach循环。
这可能有助于解决您的任务。
Truecaller
答案 1 :(得分:0)
如果有人遇到类似的麻烦,这是我在reddit上发表的同一问题的另一篇文章中的代码
$ReferenceGroup = Get-ADGroupMember BBB
$GroupList = @('CCC')
$Output = New-Object System.Collections.Generic.List[System.Object]
foreach ($User in $ReferenceGroup) {
$MemberObject = [pscustomobject]@{
Name = $User.name
}
foreach ($Group in $GroupList) {
if ((Get-ADGroupMember $Group)-match $User){
$MemberObject | Add-Member -MemberType NoteProperty -Name $Group -Value Yes
}
else {
$MemberObject | Add-Member -MemberType NoteProperty -Name $Group -Value No
}
}
$Output.Add($MemberObject)
}
$Output | Export-Csv -Path C:\Users\Public\test.csv