Powershell 检查组中是否存在用户
我无法使此脚本提供正确的输出,我想检查组中是否存在用户(来自Users.csv)(每个域中有一个组,这是一个多域环境) 我认为问题在于第二个Powershell 检查组中是否存在用户,powershell,active-directory,powershell-4.0,Powershell,Active Directory,Powershell 4.0,我无法使此脚本提供正确的输出,我想检查组中是否存在用户(来自Users.csv)(每个域中有一个组,这是一个多域环境) 我认为问题在于第二个foreach。 现在,输出是每个域的正确行数,但它们都表示: aa@aa.aa bb@bb.bb组PSO\u stdpasswordPolicyWith NoAccountLockout中不存在 应该说: aa@aa.aa组中不存在 PSO_stdpasswordpolicy无账户锁定 bb@bb.bb组中不存在 PSO_stdpasswordpolicy
foreach
。
现在,输出是每个域的正确行数,但它们都表示:
aa@aa.aa bb@bb.bb组PSO\u stdpasswordPolicyWith NoAccountLockout中不存在
应该说:
aa@aa.aa组中不存在
PSO_stdpasswordpolicy无账户锁定
bb@bb.bb组中不存在
PSO_stdpasswordpolicy无账户锁定
Users.csv包含电子邮件地址
,显示名称
,对象GUID
Clear-Host
$user = Import-Csv ".\Users.csv"
$group = "PSO_StdPasswordPolicyWithNoAccountLockout"
$domains = (Get-ADForest).domains
foreach ($domain in $domains) {
Write-Host ="********** - $domain - **********" -ForegroundColor Yellow
$members = Get-ADGroupMember -Identity $group -Server $domain | Select-Object objectGUID
$exportMembers = $members | Export-Csv .\RemoveUsersTemp\$domain.csv -NoTypeInformation
$importFile = ".\RemoveUsersTemp\$domain.csv"
$amembers = import-csv $importFile | Select-Object objectGUID
foreach ($amember in $amembers) {
If ($amembers.objectGUID -contains $user.objectGUID) {
Write-Host $user.EmailAddress"exists in the group $group " -ForegroundColor Green
}
Else {
Write-Host $user.EmailAddress"does not exists in the group $group" -ForegroundColor Red
}
}
}
这是因为您在第二个循环中使用了
$user
,但没有循环$user
,因此您引用的是整个$user
数组,该数组的内容为users.csv
$user循环到哪里?$user.objectGUID将如何返回所有GUID。在用户列表中放置另一个循环,并在第二个循环中迭代。我明白你的意思,但我不太确定我是如何做到的。