[英]PowerShell Active Directory - Can't use array value in filter for Get-ADUser
[英]Using PowerShell how can I search and filter an array of exported Active Directory users like I can with Get-ADUser?
我有一个PowerShell脚本,用于将CSV文件的内容与Active Directory进行比较。 CSV文件包含AD中已有人员的人口统计信息列表。 列之一是“ emplid”。 此字段中的值对应于AD中用户对象的“ employeeID”属性的值。 因此,我目前使用此“ emplid”属性来交叉引用AD并找到相应的用户帐户。 为此,我使用类似于以下内容的行:
$UserAccounts = $ListOfEmloyeeIDs | ForEach-Object {Get-ADUser -Properties * -Filter {employeeID -Eq $_}}
然后,我将其用于将这些用户帐户添加到安全组中:
$UserAccounts.SamAccountName | ForEach-Object {Add-ADGroupMember -Identity SpecialSecurityGroup -Members $_}
问题出在第一行。 有数千个用户帐户,脚本可能需要几个小时才能运行。 这也导致了广告管理员的投诉。 我要执行的操作是使用以下命令将所有活动AD用户加载到变量中(运行时间不到2分钟):
$ADPeopleActive = Get-ADUser -SearchBase "OU=People,DC=MyAD,DC=com" -Properties EmployeeID -Filter {Enabled -Eq $True}
然后,我想对此数组进行交叉引用,并构建一个SamAccountNames列表,以馈入类似于第二行的内容,以填充我的安全组。
我的问题是我想不出一种方法,可以对使用我使用Get-ADuser与AD进行交叉引用的方式构建的数组进行交叉引用。 有人可以帮忙吗?
就像是
$UserAccounts = $ADPeopleActive| Where-Object { $ListOfEmloyeeIDs -contains $_.EmployeeID }
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.