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

[玩转系统] Set-ADUser 解释 - 如何使用 PowerShell 修改 AD 用户

作者:精品下载站 日期:2024-12-14 03:41:37 浏览:16 分类:玩电脑

Set-ADUser 解释 - 如何使用 PowerShell 修改 AD 用户


需要更新 Active Directory 中的多个用户?或者寻找更有效的方式来修改用户的属性?那么 PowerShell 中的 Set-ADuser cmdlet 确实会对您有所帮助。

我们都学会了通过 Active Directory 用户和计算机管理控制台 (ADUC) 来管理用户。它非常适合对单个用户快速进行一些更改。但是,当您需要更新不同 OU 中的多个用户的属性时,使用 PowerShell 会更有效。

在本文中,我们将了解如何使用 Set-ADuser cmdlet。我们有什么选择,我会给你一些有用的例子。

PowerShell 活动目录模块

在开始之前,我们首先需要确保已安装 PowerShell Active Directory 模块。要检查是否已安装该模块,只需在 PowerShell 中运行以下命令即可:

Get-Module -name ActiveDirectory

# Result:
ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   1.0.0.0    ActiveDirectory                     {Add-ADCentralAccessPolicyMember, Add-ADComputerServiceAccount, Add-A...

如果该模块未列出,那么我们需要安装 RSAT 模块(远程服务器管理)。为此,请使用以下 PowerShell 命令:

Install-WindowsFeature RSAT-AD-PowerShell

该模块会自动安装在域控制器上。

在 Windows 10 上安装 PowerShell Active Directory 模块

但在 Windows 10 或 11 上我们需要启用 RSAT 功能。我们将使用 PowerShell 来执行此操作,而不是单击设置屏幕:

  1. Windows键+ X (或右键单击开始)
  2. 打开Windows PowerShell(管理员)
  3. 输入以下命令:
Add-WindowsCapability -online -Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”

使用 Set-ADUser cmdlet

使用 Set-ADUser cmdlet,我们可以修改 Active Directory 用户的所有属性。为此,我们可以使用 cmdlet 的参数之一或使用“添加”、“更新”、“替换”参数。 Microsoft 文档中列出了 Set-ADUser 的所有参数。

假设我们想要更改用户 Alan Rhodes 的职位。他目前的职位是员工,我们打算将其更改为楼层经理。

Set-ADUser -Identity arhodes -Title "Floor manager"

我们根据用户主体名称(身份)选择用户,并将标题设置为楼层经理。正如您在下面的屏幕截图中看到的,Set-ADUser cmdlet 不提供任何输出。

但我们可以简单地使用 Get-ADUser 在 PowerShell 中检查结果

[玩转系统] Set-ADUser 解释 - 如何使用 PowerShell 修改 AD 用户

设置多个属性

我们还可以一次更改或设置多个属性。假设我们还想更新艾伦的电话号码、办公室和部门属性。

Set-ADUser -Identity arhodes -OfficePhone "(012)-157-8923" -Office "A3.20" -Department Operations

清除AD用户属性

有时您需要删除或清除某个属性。为此,您需要使用清除参数,这将删除所有选择字段的内容。如果我们想删除手机,我们可以执行以下操作:

Set-ADUser -identity arhodes -Clear mobile

或者要清除多个 AD 属性,您可以使用

Set-ADUser -identity arhodes -Clear mobile,title,department

使用 Set-ADUser 添加和删除属性

某些属性可以包含多个值,例如 ProxyAddress otherTelephone 。要设置或更新这些属性中的值,我们可以使用 Set-ADUser 中的添加和删除参数。

您可以使用逗号分隔的列表来设置多个值:

Set-ADUser -Identity arhodes -Add @{proxyAddresses="[email protected]","[email protected]"}

要从列表中删除单个值,我们只需指定要删除的值即可:

Set-ADUser -Identity arhodes -Remove @{proxyAddresses="[email protected]"}

使用 Set-ADuser 禁用 Active Directory 帐户

我们还可以使用 Set-ADuser cmdlet 来启用或禁用 Active Directory 中的帐户。 enabled 参数是一个布尔类型,因此我们可以将其设置为 true 或 false。

要禁用 Active Directory 中的用户,可以使用以下命令:

# Disable a user
Set-ADUser -identity cparker -Enabled:$false

# Enable a user
Set-ADUser -identity cparker -Enabled:$false

批量更新AD用户

到目前为止,我们仅使用 PowerShell 更新了单个用户,但 Set-ADUser cmdlet 的真正威力在于批量更新 AD 用户。更改单个用户的属性也可以通过管理控制台轻松完成。

但如何更改 10 个用户的经理或更新所有用户的公司地址呢?为此,我们将使用 Get-ADUser cmdlet 和 Set-ADUser。 Get 允许我们过滤用户,我们可以使用 Set 来更新结果中的每个用户。

在第一个示例中,我们让艾伦·罗兹 (Alan Rhodes) 担任楼层经理。因此,让我们给他一些直接报告。我们将选择当前由 Andre West 作为经理的所有用户,并将其更改为 Alan Rhodes。

Get-ADUser -Filter 'manager -eq "awest"' | Set-ADUser -Manager arhodes

在使用 Set-ADuser 更改属性之前,最好先检查 Get-ADUser cmdlet 的结果。

[玩转系统] Set-ADUser 解释 - 如何使用 PowerShell 修改 AD 用户

按 OU 过滤

Get-ADUser 还允许我们过滤 OU。当您有很多用户并且想要限制结果或者您只需要选择用户时,这非常有用。

假设我们的营销部门要搬到另一个办公室。我们不能简单地根据办公地址来选择用户,因为我们只想要营销部门。那么我们能做的是:

Get-ADUser -Filter 'city -eq "Amsterdam"' -SearchBase "OU=Marketing,OU=Amsterdam,OU=Sites,DC=Lazyadmin,DC=NL" | Set-ADUser -StreetAddress "Westerdok 1" -PostalCode "2312ab"

[玩转系统] Set-ADUser 解释 - 如何使用 PowerShell 修改 AD 用户

使用 CSV 列表更新用户

批量更新 Active Directory 中的用户的另一个好方法是使用 CSV 列表。 CSV 文件的优点是您可以利用 Excel 文件的便利性为每个用户设置不同的值。

我在 Excel 中创建了一个简单的 CSV 文件,第一列是用户的显示名称,第二列和第三列是新电话号码。只需将 Excel 文件另存为 CSV 即可。

Name;MobilePhone;OfficePhone
Bob Davis;(732)-016-9810;(933)-701-6542
Erik Parker;(732)-016-9720;(933)-701-6543
Jean Miles;(732)-016-9821;(933)-701-6544
Kelly Rice;(732)-016-9813;(933)-701-6545
Mathew Scott;(732)-016-9620;(933)-701-6546
Oscar May;(732)-016-9851;(933)-701-6547
Regina Clark;(732)-016-9811;(933)-701-6548

我们现在可以创建一个小型 PowerShell 脚本,该脚本将读取 CSV 文件、查找每个用户并使用正确的值更新属性:

Import-Csv -Delimiter ";" -Path c:\temp\PhoneNumberUpdate.csv | Foreach {
    # Find user
    $ADUser = Get-ADUser -Filter "name -eq '$($_.name)'"

    if ($ADUser){
        Set-ADUser -Identity $ADUser -MobilePhone $_.MobilePhone -OfficePhone $_.OfficePhone
    }else{
        Write-Warning ("Failed to update " + $($_.name))
    }
}

使用实例参数

从 CSV 文件导入数据的一个常见问题是空值。以上面的例子为例,并非所有用户都可能拥有手机号码。如果我们使用上面的方法运行脚本,我们会收到错误,因为某些字段不包含值。为了解决这个问题,我们可以使用 -Instance 参数。

使用 Instance 参数,只有更改的值才会更新。这也允许我们处理 CSV 文件中的空值。我通过删除一些(移动)电话号码更改了示例 CSV:

Name;MobilePhone;OfficePhone
Bob Davis;(732)-016-9810;(933)-701-6542
Erik Parker;;(933)-701-6543
Jean Miles;;(933)-701-6544
Kelly Rice;(732)-016-9813;(933)-701-6545
Mathew Scott;(732)-016-9620;
Oscar May;;(933)-701-6547
Regina Clark;(732)-016-9811;(933)-701-6548

要更新字段,我们首先获取具有所需属性的用户,然后设置新值并使用 Set-ADUser 更新用户。如果 CSV 文件中该字段为空,那么我们将跳过它。请记住,此方法不会清除 Active Directory 中的值。

Import-Csv -Delimiter ";" -Path c:\temp\PhoneNumberUpdate.csv | Foreach {
    # Find user
    $ADUser = Get-ADUser -Filter "name -eq '$($_.name)'" -Properties MobilePhone,OfficePhone

    if ($ADUser){
        if ($_.MobilePhone) {$ADUser.MobilePhone = $_.MobilePhone}
        if ($_.OfficePhone) {$ADUser.OfficePhone= $_.OfficePhone}
        Set-ADUser -Instance $ADUser
    }else{
        Write-Warning ("Failed to update " + $($_.name))
    }
}

在本文中,我将更详细地介绍如何使用 CSV 文件更新 Active Directory 中的用户属性。

总结

Set-ADUser cmdlet 使更新 Active Directory 中多个用户的属性变得非常容易。请始终确保首先使用 Get-ADUser 或使用 -whatif 参数验证过滤器。

如果您有任何疑问,请在下面发表评论。

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

取消回复欢迎 发表评论:

关灯