【发布时间】:2019-10-24 21:53:23
【问题描述】:
我正在尝试创建一个脚本,用于检查 A 组的成员是否不是 b-g 组的成员,如果他们不是其中的成员,则将他们的姓名输出到日志/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
}
}}
【问题讨论】:
-
是否缺少某些代码?
$group在哪里指定?而且我认为您必须添加另一个foreach循环来处理所有$checkgroups。 -
对不起,在代码中改成了 $group1 但在替换代码之前忘记更正了。我试图在 -contains 之后在代码中获取一个 foreach 对象,但可能做得不对。我试图做 -contains foreach-object ($checkgroups) 但它抛出了错误,那行代码是我无法让它正常工作的唯一区域,如果我将其更改为单个组,我可以获得结果包含或不包含,但我担心我可能需要将它展开并在其自己的代码行中将其扩展到每个组,这会很痛苦。
标签: powershell active-directory wildcard