我不确定我的逻辑在哪里?此脚本背后的想法是找到与已禁用的用户帐户关联的所有管理员帐户。我们使用SamAccountName的代码,但管理员帐户以-a,-d,-e结尾,供我们的IT管理员使用。我想如果我查看所有已禁用的用户并创建了数组,然后抓住所有已启用的管理员帐户,然后查找前9个匹配的数字,我会获得一个列表,其中包含已启用管理员帐户的已禁用用户。相反,我在两个帐户上都禁用了匹配,只有通过Excel才能看到具有关联启用管理员帐户的帐户。为什么我的方法不按我的意图工作? THX
$Users1 = Get-ADUser -Filter {enabled -eq $False} -Properties SamAccountName, name, title, enabled,lastlogondate,accountexpirationdate | select SamAccountName, name, title,enabled,lastlogondate, accountexpirationdate
$Users2 = Get-ADUser -Filter {samaccountname -like "*-a" -or samaccountname -like "*-d" -or samaccountname -like "*-e" -and enabled -eq $True} -Properties SamAccountName, name, title,enabled, lastlogondate,accountexpirationdate | select SamAccountName, name,enabled, title,lastlogondate, accountexpirationdate
$output = "C:\scripts\adcleanup\Admin-Accounts-Need-Term_$((Get-Date).ToString('MM-dd-yyyy')).csv"
$SIDTable = @{}
$Users1 | ForEach-Object {
$SIDTable[$_.SamAccountName] = $_
}
$matching = ForEach ($User in $Users2) {
$SID = $User.SamAccountName.Substring(0,8)
If ($SIDTable.containskey($SID)) {
$SIDTable[$SID] | Select @{Name="SID";Expression={$user.SamAccountName}},SamAccountName,@{Name="Admin Enabled";Expression={$user.enabled}},"Enabled","Name", "Title", "LastLogonDate", "AccountExpirationDate"
}}
$matching | Export-csv $output -NoTypeInformation
答案 0 :(得分:1)
确保正确对Filter
中的条款进行分组:
-Filter {(samaccountname -like "*-a" -or samaccountname -like "*-d" -or samaccountname -like "*-e") -and enabled -eq $True}