按组织单位过滤广告组

时间:2018-06-21 18:37:38

标签: powershell

我正在尝试创建一个Power Shell脚本,该脚本会提示特定组织管理的特定AD组的输入,这些脚本实际上将过滤掉不再位于该组织中的用户,并且仅返回那些用户的“ samaccountname”和当前部门特定用户。我已经开始了,但似乎无法正确过滤。任何建议将不胜感激。

Add-Type -AssemblyName Microsoft.VisualBasic
$groupName = [Microsoft.VisualBasic.Interaction]::InputBox("Please enter AD group name to display users no longer in department:", "XYZ", "$env")
Get-ADGroupMember -Identity $groupName -Recursive | Get-ADUser -Properties Department -Filter {enabled -eq $true} | ? {$_.DistinguishedName -notlike "*,OU=XYZ,*"} | Select-Object SamAccountName,Department 

1 个答案:

答案 0 :(得分:0)

看来它不像Get-ADUser的-Filter,我认为(不是100%)是因为通过管道,它一次发送一个用户,所以没有。没什么要过滤的。

这就是我要做的/尝试的(也许是更好的方法,但是测试一下似乎可以到达想要去的地方):

$MatchedUsers=@{}
$GroupMembers=Get-ADGroupMember -Identity $groupName -Recursive | Get-ADUser -Properties Department

ForEach ($User in $GroupMembers) {
    If (($User.Enabled -eq "True") -and ($User.DistinguishedName -notlike "*,OU=XYZ,*")) {
        $MatchedUsers=@{
            'SamAccountName'=$User.SamAccountName
            'Department'=$User.Department
        }
    $obj=New-Object -TypeName PSObject -Property $MatchedUsers
    Write-Output $obj
    } 
}