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

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

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

如何安装 PowerShell Active Directory 模块和管理 AD


每个 Windows 系统管理员不仅应该能够使用图形 AD 管理单元(通常是 ADUC,Active Directory 用户和计算机),还应该能够使用 PowerShell cmdlet 来执行日常 Active Directory 管理任务。最常见的是,Windows PowerShell 的 Active Directory 模块用于域和对象管理任务(用户、计算机、组)。在本文中,我们将了解如何安装

RSAT-AD-PowerShell

Windows 上的模块,了解其基本功能以及可用于管理 AD 和与 AD 交互的流行 cmdlet。

如何在 Windows 10 和 11 上安装 Active Directory PowerShell 模块?

您不仅可以在服务器上安装 RSAT-AD PowerShell 模块,还可以在工作站上安装。该模块包含在 Windows 的 RSAT(远程服务器管理工具)包中。

在当前版本的 Windows 11 和 Windows 10 中,RSAT 组件作为按需功能在线安装。您可以使用以下命令安装该模块:

Add-WindowsCapability -online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

或者通过设置 -> 应用程序 -> 可选功能 -> 添加功能 -> RSAT:Active Directory 域服务和轻量级目录服务工具。

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

在以前版本的 Windows 上,必须手动下载并安装 RSAT 软件包。之后,您需要从控制面板启用 PowerShell 的 AD 模块:程序和功能 -> 打开或关闭 Windows 功能 -> 远程服务器管理工具 -> 角色管理工具 -> AD DS 和 AD LDS 工具。

您必须首先安装 WindowsCompatibility 模块才能在 PowerShell Core 6.x、7.x 中使用 AD cmdlet:

Install-Module -Name WindowsCompatibility

然后将该模块加载到您的会话中:

Import-Module -Name WindowsCompatibility
Import-WinModule -Name ActiveDirectory

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

现在,您可以在 PowerShell Core 7.x 脚本中使用 AD cmdlet。

如何在 Windows 上安装最新版本的 PowerShell?

在 Windows Server 上安装 RSAT-AD-PowerShell 模块

在 Windows Server 上,您可以从服务器管理器图形控制台或使用 PowerShell 安装适用于 Windows PowerShell 的 Active Directory 模块。

您可以使用以下命令检查 Active Directory 模块是否已安装:

Get-WindowsFeature -Name "RSAT-AD-PowerShell"

如果缺少该模块,请安装它:

Install-WindowsFeature -Name "RSAT-AD-PowerShell" -IncludeAllSubFeature

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

要通过服务器管理器安装该模块,请转至添加角色和功能 -> 功能 -> 远程服务器管理工具 -> 角色管理工具 -> AD DS 和 AD LDS 工具->启用Windows PowerShell 的 Active Directory 模块

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

通过使用 RSAT-AD PowerShell 模块,您不需要使用本地域控制器会话来管理 Active Directory。该模块可以安装在任何成员服务器或工作站上。在 AD 域控制器上,当部署 Active Directory 域服务 (AD DS) 角色时(当服务器升级为 DC 时),该模块会自动安装。

该模块通过 Active Directory Web 服务与 AD 进行交互,该服务必须在域控制器上运行,并且可供 TCP 端口 9389 上的客户端使用。使用 Test-NetConnection cmdlet 验证该端口未被 DC 上的防火墙阻止:

Test-NetConnection MUN-DC1 -port 9389

使用 PowerShell 管理 Active Directory

Windows PowerShell 的 Active Directory 模块具有大量用于与 AD 交互的 cmdlet。 Windows Server 2022/Windows 11 的当前版本模块中提供了 147 个 AD PowerShell cmdlet。

检查计算机上是否安装了该模块:

Get-Module -Name ActiveDirectory -ListAvailable

在使用 Active Directory 模块 cmdlet 之前,必须将其导入 PowerShell 会话(从 Windows Server 2012 R2/Windows 8.1 开始,该模块会自动导入)。

Import-Module ActiveDirectory

确保 AD 模块已加载到您的 PowerShell 会话中:

Get-Module

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

您可以显示可用 Active Directory cmdlet 的完整列表:

Get-Command -module ActiveDirectory

AD 模块中 cmdlet 的总数:

Get-Command -module ActiveDirectory |measure-object|select count

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

大多数 RSAT-AD PowerShell 模块 cmdlet 以

Get-

,

Set-

或者

New-

前缀。

  • 获取 - 类 cmdlet 用于从 Active Directory 获取不同的信息(

    Get-ADUser

    — 用户属性,

    Get-ADComputer

    - 计算机设置,

    Get-ADGroupMember

    — 团体成员身份等)。您无需成为域管理员即可使用这些 cmdlet。任何域用户都可以运行 PowerShell 命令来获取 AD 对象属性的值(机密属性除外,例如 LAPS 的示例);

  • Set-类 cmdlet 用于设置(更改)Active Directory 中的对象属性。例如,您可以更改用户属性 (Set-ADUser)、计算机设置 (Set-ADComputer) 等。要执行这些操作,您的帐户必须对要修改的对象具有写入权限(请参阅文章如何在 Active Directory 中委派管理员权限);

  • New- 开头的命令允许您创建 AD 对象(创建用户 -

    New-ADUser

    ,创建一个群组 —

    New-ADGroup 

    ,创建一个组织单位 —

    New-ADOrganizationalUnit

    );

  • Add- 开头的 Cmdlet:将用户添加到组 (

    Add-ADGroupMember

    ),添加细粒度密码策略(

    Add-ADFineGrainedPasswordPolicySubject

    );

  • 删除 - cmdlet 用于删除 AD 对象

    Remove-ADGroup

    ,

    Remove-ADComputer

    ,

    Remove-ADUser

    )。

您可以使用特定的 PowerShell cmdlet 仅管理某些 AD 组件:

  • Enable-ADOptionalFeature

    - 启用可选的 AD 功能(例如,AD 回收站用于恢复已删除的对象);

  • Install-ADServiceAccount

    - 配置托管服务帐户(MSA、gMSA);

  • Search-ADAccount

    - 允许您在 Active Directory 中查找禁用、不活动、锁定的用户和计算机帐户;

  • Enable-ADAccount

    /

    Disable-ADAccount

    /

    Unlock-ADAccount

    - 启用/禁用/解锁帐户。

默认情况下,PowerShell cmdlet 连接到环境中最近的域控制器 (LOGONSERVER)。使用-Server参数,您可以连接到不同域控制器或不同域中的ADDS(您可以使用

nltest /dclist:newad.com

命令)。

-Server 参数可用于几乎所有模块 cmdlet。例如

Get-ADuser j.smith -Server mun-dc1.a-d.site

您还可以使用-Credential参数来指定备用 Active Directory 用户凭据。

$creds = Get-Credential
Get-ADUser -Filter * -Credential $creds

以下是如何获取有关任何 cmdlet 的帮助

get-help Set-ADUser

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

您可以显示使用 Active Directory cmdlet 的示例,如下所示:

(get-help New-ADComputer).examples

从远程计算机导入 Active Directory PowerShell 模块

无需在所有计算机上安装 AD PowerShell 模块。管理员可以从域控制器(需要域管理员权限)或任何其他计算机远程导入此模块。

PowerShell Remoting 用于连接到远程计算机。这需要在远程主机上启用并配置 Windows 远程管理 (WinRM)。

与安装了 AD PowerShell 模块的远程计算机创建新会话:

$psSess = New-PSSession -ComputerName DC_or_Comp_with_ADPosh

将 ActiveDirectory 模块从远程计算机导入到本地 PS 会话中:

Import-Module -PSsession $psSess -Name ActiveDirectory

现在,您可以从计算机上的 Active Directory 模块运行任何命令,就像该模块安装在本地一样。但是,它们将在远程主机上执行。

您可以将这些命令添加到 PowerShell 配置文件中,以便在启动 powershell.exe 控制台时自动从远程会话导入模块。跑过

notepad $profile.CurrentUserAllHosts

打开您的 PS 配置文件。

您可以使用以下命令结束远程会话:

Remove-PSSession -Session $psSess

这种通过 PowerShell 隐式远程处理导入 AD 模块的方法允许您从无法安装模块本地副本的 Linux 和 MacOS 主机使用 PowerShell cmdlet。

了解如何在 Linux 上安装 PowerShell Core。

您还可以在不安装 RSAT 的情况下使用 PowerShell 的 Active Directory 模块。去做

只需从安装了 RSAT-AD PowerShell 模块的计算机中复制一些文件即可:

  • 目录

    C:\Windows\System32\WindowsPowerShell\v1.0\Modules
  • 文件

    ActiveDirectory.Management.dll
  • 文件

    ActiveDirectory.Management.resources.dll

然后您需要将该模块导入到当前会话中:

Import-Module C:\PS\ADmodule\Microsoft.ActiveDirectory.Management.dll
Import-Module C:\PS\ADmodule\Microsoft.ActiveDirectory.Management.resources.dll

之后,您可以使用所有 AD 模块 cmdlet,而无需安装 RSAT。

Active Directory 的常见 PowerShell 命令

让我们看一下可以使用 Active Directory for PowerShell cmdlet 执行的一些典型管理任务。

您可以在 WOSHub 网站上找到一些有关如何将 Active Directory 用于 PowerShell 模块 cmdlet 的有用示例。请点击链接获取详细说明。

New-ADUser:创建AD用户

要创建新的 AD 用户,您可以使用 New-ADUser cmdlet。您可以使用以下命令创建用户:

New-ADUser -Name "Mila Beck" -GivenName "Mila" -Surname "Beck" -SamAccountName "mbeck" -UserPrincipalName "[email protected]" -Path "OU=Users,OU=Berlin,OU=DE,DC=a-d,DC=com" -AccountPassword(Read-Host -AsSecureString "Input User Password") -Enabled $true

有关 New-ADUser cmdlet 的详细信息(包括有关如何批量创建用户域帐户的示例),请参阅本文。

Get-ADComputer:获取计算机对象属性

要获取特定 OU 中计算机对象的属性(计算机名称和上次登录日期),请使用 Get-ADComputer cmdlet:

Get-ADComputer -SearchBase ‘OU=CA,OU=USA,DC=a-d,DC=com’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize

Add-ADGroupMember:将 Active Directory 用户添加到组中

要将用户添加到 AD 域中的现有安全组,请运行以下命令:

Add-AdGroupMember -Identity LondonSales -Members e.braun, l.wolf

显示 AD 组中的用户列表并将其导出到 CSV 文件:

Get-ADGroupMember LondonSales -recursive| ft samaccountname| Out-File c:\ps\export_ad_users.csv

了解有关使用 PowerShell 管理 AD 组的更多信息。

Set-ADAccountPassword:在 AD 中重置用户密码

要使用 PowerShell 在 AD 中重置用户密码:

Set-ADAccountPassword m.lorenz -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “Ne8Pa$$0rd1” -Force -Verbose) -PassThru

如何解锁、启用和禁用 Active Directory 帐户?

要禁用 AD 用户帐户:

Disable-ADAccount m.lorenz

启用帐户:

Enable-ADAccount m.lorenz

解锁被域密码策略锁定的帐户:

Unlock-ADAccount m.lorenz

Search-ADAccount:如何查找不活动和禁用的 AD 对象?

要查找并禁用 AD 域中超过 90 天未登录的所有计算机,请使用 Search-ADAccount cmdlet:

$timespan = New-Timespan -Days 90
Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan $timespan | Disable-ADAccount

New-ADOrganizationalUnit:在AD中创建组织单位

要在 AD 中快速创建典型的组织单位结构,您可以使用 PowerShell 脚本。假设您要创建多个以状态作为名称的 OU,并创建典型的对象容器。通过图形 ADUC 管理单元手动创建此 AD 结构非常耗时。 PowerShell 的 AD 模块允许在几秒钟内解决此任务(编写脚本的时间除外):

$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(".")
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = ("Nevada","Texas","California","Florida")
$Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts")
$FirstOU ="USA"
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
{
New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
{
New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false
}
}

运行脚本后,您将在 Active Directory 中看到以下 OU 结构。

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

要在 AD 容器之间移动对象,您可以使用 Move-ADObject cmdlet:

$TargetOU = "OU=Sales,OU=Computers,DC=a-d,DC=com"
Get-ADComputer -Filter 'Name -like "SalesPC*"' | Move-ADObject -TargetPath $TargetOU

Get-ADReplicationFailure:检查 Active Directory 复制

您可以使用 Get-ADReplicationFailure cmdlet 检查 AD 域控制器之间的复制状态:

Get-ADReplicationFailure -Target NY-DC01,NY-DC02

您可以使用此命令检查域控制器和 Active Directory 的运行状况。

要获取有关域中所有 DC 的信息,请使用 Get-AdDomainController cmdlet:

Get-ADDomainController -filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table -auto

[玩转系统] 如何安装 PowerShell Active Directory 模块和管理 AD

在本文中,我们了解了如何安装和使用 Active Directory PowerShell 模块进行 AD 域管理。我希望本文能够鼓励您进一步探索此模块并开始自动化大部分 AD 管理任务。

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

取消回复欢迎 发表评论:

关灯