gpt4 book ai didi

powershell - 搜索广告组成员

转载 作者:行者123 更新时间:2023-12-03 01:28:37 27 4
gpt4 key购买 nike

我正在构建一个脚本,以查找尚未登录X天且不属于特定安全组的AD用户。我在OU中有2个用户,其中一个用户位于DoNotDisable安全组(pileum)中,而另一个用户不在(bubba)中。

$DC = Get-ADDomainController
$OUs = Get-ADOrganizationalUnit -Filter 'Name -eq "test"'
$accounts = $null
$canNotDisable = Get-ADGroupMember -Identity DoNotDisable -Recursive | Select -ExpandProperty Name
$TimeStamp = get-date -format D
$description = "Disabled on " + $TimeStamp

foreach ($OU in $OUs) {
# Search for User Accounts inactive for XX Days and Disable if not in DoNotDisable Security Group
$accounts = Search-ADAccount -SearchBase $OU -AccountInactive -TimeSpan ([timespan]90d) -UsersOnly
foreach($account in $accounts){
If ($canNotDisable -contains $account){
Write-Host "$account can not be disabled"
} Else {
Write-Host "$account can be disabled"
}
}
}

如果我查看$ canNotDisable变量,它将在DoNotDisable组中提取正确的用户。

enter image description here

但是,当我运行完整脚本时,它将同时返回该组中的用户和不在该组中的用户。

enter image description here

如果有人可以帮助我弄清我的缺失,我将万分感谢。 TIA。

最佳答案

在内部foreach循环中更改您的if语句,使其与ID(而非整个对象)匹配。

由于$canNotDisable是字符串列表,因此您需要从$Account变量中获取名称,以查看该名称是否存在(而不是结果对象)。

foreach ($OU in $OUs) {
# Search for User Accounts inactive for XX Days and Disable if not in DoNotDisable Security Group
$accounts = Search-ADAccount -SearchBase $OU -AccountInactive -TimeSpan ([timespan]90d) -UsersOnly
foreach($account in $accounts){
If ($canNotDisable -contains $account.Name){
Write-Host "$account can not be disabled"
} Else {
Write-Host "$account can be disabled"
}
}
}

关于powershell - 搜索广告组成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60157301/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com