powershell - 如果用户帐户的标题发生更改,则使用 powershell 修改 Active Directory 组成员身份
问题描述
如果用户帐户“标题”发生更改,我正在尝试使用 PowerShell 从安全组中删除用户。
- 组名 = 开发团队
- 用户头衔 = 开发人员
我想获取Development Team
安全组的所有成员,如果该组的成员的标题不是Developer
,则将该用户从组中删除。
这只是一个示例,将用于基于标题的基于角色的组维护。如果用户的标题更改,他们的组成员身份将通过此预定脚本更改。
此脚本删除组的所有成员,而不仅仅是用户标题不等于的成员Developer
。如何修改脚本以仅删除标题不等于的用户Developer
?
Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
if($member.title -notlike 'Developer')
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
}
根据下面来自LisaJ的信息,这就是新脚本的样子。作品!
Import-Module ActiveDirectory
$groupname = 'Development Team'
$members = Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Team,ou=Security Groups,dc=domain,dc=com))"
foreach($member in $members)
{
Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
解决方案
Title 不是 get-adgroupmember 返回的属性,因此所有 $member.title 值都不是“Developer”,因为该值始终为空。我会使用 LDAP 过滤器,例如
Get-ADUser -LDAPFilter "(&(!(title=Developer))(memberOf=cn=Development Group,ou=groups,dc=example,dc=com))"
识别需要从组中删除的帐户。此过滤器返回一组用户,这些用户是Development Group 组的成员(您需要该组的正确完全限定 DN),但其标题不是“开发人员”。将您的 foreach 用于那些要删除的广告组成员。
您还可以在他们的头衔成为开发人员时将用户配置到组
Get-ADUser -LDAPFilter "(&(title=Developer)(!(memberOf=cn=Development Group,ou=groups,dc=example,dc=com)))"
识别所有非“开发组”成员并以“开发者”为标题的帐户。
推荐阅读
- java - java中的推广
- node.js - 自适应卡上的 Action.Submit 不会调用下一步(仅在 Microsoft Teams 中有效,在网络聊天中有效):Bot Framework V4
- tensorflow - AssertionError:labels.txt 和 cfg/yolov2.cfg 表示的类号不一致
- android - 如何在 android 的首选项中从工具中获取值(使用 androidAnnotations)
- firebase - 尝试获取 Firestore 数据库实例时出现 NoClassDefFoundError
- android - 如何获取 FragmentPagerAdapter 中的当前项目?
- azure - 每当运行操作时,Azure Artifact 源都会导致“从缓存中获取时完整性不正确”
- graphql-dotnet - GraphQL .NET:单例模式的中间件问题
- postgresql - PostgreSQL for Debian vs Redhat (Centos)
- azure - 使用警告在 Terraform for Azure 中隐藏一个秘密