powershell Get-ADUser -筛选姓氏为空的子OU和用户,然后添加到已启用邮件的安全组

siv3szwd  于 2022-12-13  发布在  Shell
关注(0)|答案(1)|浏览(89)

我4天前发布的,社区真的很有帮助!我现在可以在特定的父OU中查找有姓氏的用户。
我尝试做的第二个步骤是现在将那些有姓氏并且在父OU中的用户添加到启用邮件的安全组。但我需要编辑以指定我的需求。我以为我已经尝试过这样做,但它最终仍然搜索通过儿童OUs和添加那些没有姓氏,所以我一定有什么错误或混乱。
我当前的脚本是

$Admin_Accounts   = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Service_Accounts  = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Disabled = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Test_PowerPoint_GPO = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'

$Exclude = '({0}|{1}|{2})$' -f \[regex\]::Escape($Admin_Accounts), \[regex\]::Escape($Service_Accounts), \[regex\]::Escape($Disabled), \[regex\]::Escape($Test_PowerPoint_GPO)

Get-ADUser -Filter 'Enabled -eq $true' -SearchBase 'OU=Users,OU=Company,DC=CompanyDC,DC=local' |
Where-Object { !\[string\]::IsNullOrWhiteSpace($_.Surname) -and $_.DistinguishedName -notmatch $Exclude } |
Select-Object SamAccountName

$TargetGroup = “Company Team“
$TargetOU = “OU=Users,OU=Company,DC=Company,DC=local“
$Exclude = '({0}|{1}|{2})$' -f \[regex\]::Escape($Admin_Accounts), \[regex\]::Escape($Service_Accounts), \[regex\]::Escape($Disabled), \[regex\]::Escape($Test_PowerPoint_GPO)
$UserAccounts = Get-ADUser -Filter 'Enabled -eq $true' | ?{$_.DistinguishedName -like “_*$TargetOU*” -and $.Enabled -eq “True”}
Where-Object { !\[string\]::IsNullOrWhiteSpace($_.Surname) -and $_.DistinguishedName -notmatch $Exclude } |
Select-Object SamAccountName
ForEach($User in $UserAccounts)
{
$UsersName = $User.Name
\#Check for group membership
$Membership = Get-ADGroup $TargetGroup | Get-ADGroupMember | ?{$\_.Name -eq $UsersName}
if(!$Membership)
{
“Adding $UsersName to $TargetGroup”
Get-ADGroup $TargetGroup | Add-ADGroupMember -Members $User -Verbose
}
}

我尝试添加脚本片段来指定我的要求

piah890a

piah890a1#

在我看来你的剧本太复杂了

$Admin_Accounts   = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Service_Accounts  = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Disabled = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
$Test_PowerPoint_GPO = 'OU=Administrators,OU=Company,DC=CompanyDC,DC=local'
# Create regex matching list
[regex]$Exclude = "$Admin_Accounts|$Service_Accounts|$Disabled|$Test_PowerPoint_GPO"

$UserAccounts = Get-ADUser -Filter 'Enabled -eq $true' | Where-Object {
    $_.DistinguishedName -like “_*$TargetOU*”
} | Where-Object {
        ![string]::IsNullOrWhiteSpace($_.Surname) -and $_.DistinguishedName -notmatch $Exclude
    } | Select-Object SamAccountName

相关问题