当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 管理 Active Directory 组

作者:精品下载站 日期:2024-12-14 23:15:00 浏览:14 分类:玩电脑

使用 PowerShell 管理 Active Directory 组


Active Directory 用户和计算机 (ADUC) 图形管理单元并不是管理 Active Directory 中安全组的唯一工具。您可以使用简单的 PowerShell 命令对 Active Directory 域中的用户组进行日常管理。在本文中,我们将了解如何使用 PowerShell 在 AD 中创建新组、向其中添加(或删除)用户、显示/导出组用户列表以及管理 AD 组时经常使用的其他有用命令。

要管理 AD 组,您可以使用 Windows PowerShell 的 Active Directory 模块。 RSAT-AD-PowerShell 模块在所有版本的 Windows Server(从 Windows Server 2008R2 开始)中均可用,并且可以作为 RSAT 功能安装在 Windows 10 和 Windows 11 桌面上。

检查 AD 模块是否已加载到当前 PowerShell 会话中:

Get-Module -Listavailable

[玩转系统] 使用 PowerShell 管理 Active Directory 组

如您所见,ActiveDirectory 模块已加载。如果没有,请使用以下命令导入:

Import-Module ActiveDirectory

让我们列出允许您管理 AD 组的 PowerShell cmdlet:

Get-Command -Module ActiveDirectory -Name "*Group*"

有 11 个可用的 cmdlet:

[玩转系统] 使用 PowerShell 管理 Active Directory 组

  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADGroupMember
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

New-ADGroup:使用 PowerShell 创建新的 AD 组

使用 New-ADGroup 命令在指定的 Active Directory 容器 (OU) 中创建新的安全组:

New-ADGroup "TestADGroup" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=a-d,DC=com' -GroupScope Global -PassThru -Verbose

您可以使用 DescriptionDisplayName 属性来指定组描述和显示名称。

[玩转系统] 使用 PowerShell 管理 Active Directory 组

您可以使用GroupScope参数来设置以下类型的组之一:

  • 0=本地域

  • 1=全局

  • 2=通用

您可以按如下方式创建通讯组:

New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=a-d,DC=com' -GroupCategory Distribution -GroupScope Global -PassThru -Verbose

通讯组可用于发送电子邮件和/或授予 AD 权限。在此处了解有关 Exchange 通讯组的更多信息。

创建AD组时,可以填写任意属性。设置各种组属性值的最简单方法是通过哈希表:

$attrs = @{"mail"="[email protected]";"displayname"="ALL Munich Admins"}
New-ADGroup -Name MUNAdmins -GroupScope Global -OtherAttributes $attrs

通过 Add-AdGroupMember 将用户添加到 Active Directory

您可以使用 Add-AdGroupMember cmdlet 将用户添加到 Active Directory 组。让我们将两个用户添加到新组中:

Add-AdGroupMember -Identity TestADGroup -Members user1, user2

[玩转系统] 使用 PowerShell 管理 Active Directory 组

如果需要一次将大量用户添加到组中,可以将用户名列表保存到 CSV 文件中,然后将此 CSV 文件导入到 PowerShell 中,并使用简单的 PowerShell 脚本将每个用户添加到组中。

CSV 文件的格式应如下所示(用户必须连续列出,并以 users 作为列标题)。

[玩转系统] 使用 PowerShell 管理 Active Directory 组

Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}

要获取组 (groupX) 的所有成员并将它们添加到另一个组 (groupY),请使用以下命令:

Get-ADGroupMember “GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-Y” -Members $_}

如果需要将所有嵌套组的成员复制到新组(递归地),请运行以下命令:

Get-ADGroupMember -Identity “GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupY” -Members $_}

在上一篇文章中,我们展示了一个 PowerShell 脚本,该脚本允许您从一个用户复制 AD 组成员身份并将另一个用户添加到同一组列表中。

您可以在 Windows2016Forest 架构及更高版本中使用 Active Directory 中的临时(基于时间的)组成员身份功能。要将用户临时添加到 AD 组(例如 1 小时),请运行以下命令:

$ttl = New-TimeSpan -Minutes 60
Add-ADGroupMember -Identity "Domain Admins" -Members j.lennon -MemberTimeToLive $ttl

一小时后,该用户将自动从该安全组中删除。

Remove-ADGroupMember:使用 PowerShell 从 AD 组中删除用户

要从 AD 组中删除用户,请使用 Remove-ADGroupMember cmdlet。让我们从组中删除两个用户:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

确认用户删除:

[玩转系统] 使用 PowerShell 管理 Active Directory 组

如果您必须根据 CSV 文件中的用户列表从组中删除用户,请使用以下命令:

Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}

您无法在本地 Active Directory 中使用动态用户组(与 Azure AD 不同)。但是,您可以创建一个计划的 PowerShell 脚本,该脚本将使用以下命令自动在组中添加或删除用户:

Add-ADGroupMember

Remove-ADGroupMember

cmdlet。详细了解如何使用 PowerShell 在 Active Directory 中创建动态用户组。

使用 Get-ADGroup 查找 Active Directory 组

Get-ADGroup cmdlet 将帮助您获取有关 AD 域组的信息:

Get-ADGroup 'TestADGroup'

此命令显示有关组的主要属性的信息(DN、组类型、名称、SID)。要显示所有组属性的值,请运行以下命令:

Get-ADGroup 'TestADGroup' -properties *

[玩转系统] 使用 PowerShell 管理 Active Directory 组

如您所见,现在显示了诸如组创建和修改时间、描述等属性。

您可以使用 Get-ADGroup cmdlet 按模式搜索 AD 中的组。例如,以下命令可用于查找名称中包含短语 admins 的所有 AD 组:

Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table

或者 :

Get-ADGroup -Filter {name -like "*admins*"} -Properties Description,info | Select Name,samaccountname,Description,info

使用 Get-ADGroup,您可以获得组成员列表(存储在 members 属性中):

Get-ADGroup -Identity "Domain Admins" -Properties members | Select-Object -ExpandProperty members

但是,使用 Get-ADGroupMember cmdlet 获取组成员身份要方便得多。

Get-ADGroupMember:如何获取和导出 Active Directory 组成员?

Get-ADGroupMember cmdlet 可让您获取 AD 组的成员。这些可以是用户、计算机、其他组或托管服务帐户 (MSA/gMSA)。

Get-ADGroupMember 'TestADGroup'

要在结果中仅显示用户名,请运行:

Get-ADGroupMember 'TestADGroup'| ft name

[玩转系统] 使用 PowerShell 管理 Active Directory 组

如果该组包含其他域组,请使用递归参数显示包含所有嵌套组的完整成员列表。

Get-ADGroupMember ADadmins -recursive| ft name

要将特定组成员的帐户列表导出到 CSV 文件(以便在 Excel 中进一步使用),请运行以下命令:

Get-ADGroupMember 'ADadmins' -recursive| ft samaccountname| Out-File c:\PS\ADadminsList.csv

您可以将组中用户的信息导出到文本文件。 Get-ADUser cmdlet 用于获取用户的扩展属性。例如,除了帐户名称之外,您还可以显示组用户的 UserPrincipalName、职位和电话号码:

Get-ADGroupMember -Identity ADadmins -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }

您可以像这样计算组中的用户数量:

(Get-ADGroupMember -Identity 'domain admins').Count

[玩转系统] 使用 PowerShell 管理 Active Directory 组

要获取特定 OU 中的空组列表,请使用以下命令:

Get-ADGroup -Filter * -Properties Members -searchbase “OU=NY,OU-US,DC=corp,dc=a-d,DC=com”  | where {-not $_.members} | select Name

Get-ADGroupMember cmdlet 可用于创建一个简单的 PowerShell 脚本,通知管理员有人已将新用户添加到特定 AD 组。

Set-ADGroup:修改 Active Directory 组属性

Set-ADGroup cmdlet 允许您更改任何 Active Directory 组的属性(属性)。例如,您可以更改组的描述和名称:

Set-ADGroup -Identity MunAdmins -Description “Munich Admins Group”

或者 :

Get-ADGroup -Identity MunAdmins | Set-ADGroup -Description “Munich Admins Group”

从 Exchange GAL 中隐藏特定组:

Set-ADGroup -id MunAdmins -replace @{hideDLMembership=$true}

您可以一次更改多个组属性。使用 HashTable 可以方便地设置更改列表:

$attrs = @{"mail"="[email protected]";"displayname"="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins -Add $attrs

[玩转系统] 使用 PowerShell 管理 Active Directory 组

您可以使用以下命令获取 AD 组属性列表

get-adgroup munadmins -Properties *

或从 ADUC 控制台中的“属性编辑器”选项卡。

Remove-ADGroup:如何使用 PowerShell 删除 Active Directory 中的组?

要删除 Active Directory 中的组,请使用 Remove-ADGroup cmdlet:

Remove-ADGroup -Identity MunSales

[玩转系统] 使用 PowerShell 管理 Active Directory 组

删除组时,系统会提示您确认删除。要禁用删除确认,请添加确认开关:

Remove-ADGroup -Identity MunSales -Confirm:$false

可以从 Active Directory 回收站恢复已删除的组(和其他 AD 对象):

Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*MunSales*' } -IncludeDeletedObjects| Restore-ADObject -verbose

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯