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

[玩转系统] 检查 PowerShell 中是否存在 AD 用户

作者:精品下载站 日期:2024-12-14 20:33:48 浏览:13 分类:玩电脑

检查 PowerShell 中是否存在 AD 用户


在 PowerShell 中,我们必须导入 ActiveDirectory 模块才能使用 Get-ADUser cmdlet。如果您已经导入了它,您可以跳转到在 PowerShell 中检查 AD 用户是否存在部分;否则,让我们继续下面的步骤。

安装ActiveDirectory模块

要导入 ActiveDirectory 模块,我们首先需要安装它。因此,为此,我们需要执行以下步骤:

安装远程服务器管理工具 (RSAT)

如果我们使用Windows的工作站版本,我们需要安装它;否则,我们会收到一条错误消息,指出 Get-AD* 无法识别。但是,服务器变体不需要它,因为它已经可以在那里访问。 RSAT 软件包安装因 Windows 10 版本而异。

适用于 Windows 变体的 RSAT

如果我们使用 Microsoft Windows 10 pre-build 1809,我们需要从此处手动下载 RSAT 并安装它。但首先,请为您的操作系统和体系结构选择正确的版本(32 位或 64 位)。

安装完成后,请按照以下步骤进行验证:

  1. 打开控制面板
  2. 转到程序和功能
  3. 点击打开或关闭 Windows 功能;您可以在上一步中打开的程序和功能窗口的左侧看到它。
  4. Windows 功能窗口中,展开远程服务器管理工具 -> 角色管理工具 -> AD DS 和 AD LDS 工具,并确保Active Directory Module for Windows PowerShell 被选中;默认情况下,它被选中。

另一方面,对于 Microsoft Windows 10 post-build 1809,我们不需要从外部下载它,因为它们作为可选功能提供。相反,我们需要运行 Add-WindowsCapability cmdlet(如下所示)来启用这些可选功能。

在 Windows 10 构建后 1809 上安装 RSAT:

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

现在,我们已准备好为此版本的 Windows 操作系统导入 ActiveDirectory 模块。如果您不知道 Windows 版本,请按键盘上的 Windows + R 键,输入 winver,然后点击 输入;您将找到 Window 操作系统的版本。

适用于 Windows Server 2008R2 及最新版本的 RSAT

执行以下命令以在 PowerShell 中使用RSAT-AD-PowerShell

在 Windows Server 中启用 RSAT-AD-PowerShell 功能:

Import-Module ServerManager
Install-WindowsFeature -Name RSAT-AD-PowerShell

确保在服务器上运行上述命令;否则,您将收到一条错误消息,指出指定 cmdlet 的目标不能是基于 Windows 客户端的操作系统。您可以点击此链接下载 Windows Server。

无论是安装在 Windows 还是服务器变体上,安装 RSAT 后最好重新启动计算机。

导入 ActiveDirectory 模块

使用以下命令在 PowerShell 中导入 Active Directory 模块。

导入活动目录模块:

Import-Module ActiveDirectory

如果一切都就位,执行上述命令将不会出现任何错误。现在,您可以在 PowerShell 中使用 AD 命令。导入 Active Directory 模块后,不要忘记将 Windows PC 加入域控制器并以 AD 用户帐户登录。请记住,您可以使用 systeminfo 命令查找您的

在PowerShell中检查AD用户是否存在

在 PowerShell 中使用 Get-ADUser cmdlet 和 -Identity 参数。

将 Get-ADUser 与 -Identity 参数结合使用:

$username = "john"
$user = Get-ADUser -Identity $username
If ($user.SamAccountName -eq $username){
    Write-Host "'$username' exists."
}else{
    Write-Host "'$username' does not exist."
}

输出 :

john exists

Get-ADUser-Identity-Properties 参数结合使用可获取指定 AD 的所有属性> PowerShell 中的用户。

获取 ADUser 的所有属性:

Get-ADUser -Identity john -Properties *

输出 :

DistinguishedName : CN=John Williomson,OU=Writing,DC=Test,DC=local
Enabled           : False
GivenName         : John
Name              : John Williomson
ObjectClass       : user
ObjectGUID        : b98fd0c4-3d5d-4219-8245-b04145d6a0db
SamAccountName    : john
...               ...
...               ...

使用 Get-ADUser cmdlet 和 -Filter 参数在 PowerShell 中获取多个用户对象。

将 Get-ADUser 与 -Filter 结合使用:

Get-AdUser -Filter "Name -like '*ser*'"

输出 :

DistinguishedName : CN=UserOne,OU=SEO,DC=TestOne,DC=local
Enabled           : False
GivenName         : UserOne
Name              : UserOne
ObjectClass       : user
...               ...
...               ...
...               ...
DistinguishedName : CN=User One,CN=Users,DC=TestOne,DC=local
Enabled           : True
GivenName         : UserOne
Name              : User One
ObjectClass       : user
...               ...
...               ...
...               ...

在本节的上述示例中,我们使用 Get-ADUser cmdlet 来检索特定用户对象或搜索多个用户对象。 -Identity参数用于指定要获取的AD用户(Active Directory User)。请注意,我们可以通过不同的方式来识别用户,包括 DistinguishedName (DN)ObjectGUIDSamAccountName(SAM,安全帐户管理器)和SID(安全标识符)。请注意,我们可以通过管道将特定的用户对象传递给 -Identity 参数或将其设置为用户对象变量;例如,-Identity $yourLocalUserObjectName

为了获取多个用户对象,我们对 Name 属性值与指定模式匹配的所有用户对象使用 -Filter 参数,即 *ser** 通配符表示任意数量的字符)。或者,我们可以使用 -LDAPFilter 参数来检索多个用户对象。

如果-Filter-LDAPFilter检索多个用户对象,它们之间有什么区别? -Filter 使用 PowerShell 表达式语言指定 AD(Active Directory)的查询字符串;但是,如果您安装了轻量级目录访问协议 (LDAP),则使用 -LDAPFilter。您可以访问此页面了解更多详细信息。

使用 Get-ADUser cmdlet 和 try-catch 块来处理发生的异常。请参阅以下示例。

将 Get-ADUser 与 try-catch 结合使用:

$UserName = "RandomName"
$User = $(try {Get-ADUser $UserName} catch {$null})
If ($User -ne $Null) {
    echo "The specified user exists in the active directory."
} Else {
    echo "The specified user does not exist in the active directory."
}

输出 :

The specified user does not exist in the active directory.

请注意,您可以使用数组运算符创建用户名数组,然后使用 foreach 循环迭代该数组。对于每个数组元素,检查它是否存在于活动目录中。

一些要点

以下是在 PowerShell 中检查 AD 用户是否退出时可能需要的几点:

无法在 PowerShell 中运行 Get-ADUser

如果出现以下任何问题,您可能无法运行此 cmdlet:

  • Active Directory 模块未加载。请注意,Get-ADUserActiveDirectory 模块的一部分,默认情况下不会在 PowerShell 中加载该模块。最好将此模块导入为 Import-Module ActiveDirectory 来加载它。
  • 您没有以管理员身份运行 PowerShell。
  • 您可能指定了不正确的参数或使用了不正确的语法。
ActiveDirectory 未加载,因为未找到有效的模块文件

为此,您需要确保以下几点:

  • 您已下载并安装了正确版本的远程服务器管理工具 (RSAT)。
  • 安装 RSAT 后,通过 Import-Module cmdlet 导入 ActiveDirectory 模块来启用它。
  • 如果仍然遇到相同的问题,请重新启动计算机并重新运行命令。
  • 仍然面临此问题,请重新检查 PowerShell 执行策略并确保您已安装正确版本的 RSAT。
无法找到正在运行 ADWS 的默认服务器

如果出现以下情况,您可能会遇到这种情况:

  • 您的 Active Directory Web 服务 (ADWS) 服务未在域控制器上运行。要检查它,请在域控制器上打开 services.msc 并确保 Active Directory Web 服务的状态正在运行

  • 您未连接到网络。

  • 如果您的 DNS 设置不正确。确认计算机的 DNS 设置配置正确,并且域控制器的主机名解析为正确的 IP 地址。

  • 如果您没有指定正确的域控制器。如果您使用多个域控制器,则可能会发生这种情况。重新检查并确认您是否正确使用了以下命令:

    使用 Get-ADUser Cmdlet:

    Get-ADUser -Server <domain controller name or ip address> -Identity <username>
    </username></domain>

您可以在 PowerShell 上使用 systeminfo 命令来检查您的域。

services.msc 中找不到 Active Directory Web Services 服务

Active Directory Web 服务 (ADWS) 并不包含在所有版本的 Windows Server 中,因为默认情况下不安装它。如果您的域控制器或服务器上未安装它,则无法在 services.msc 中找到它。要解决此问题:

  • 通过在 Windows 搜索栏上搜索来打开服务器管理器。
  • 在服务器管理器中添加 AD DS 和 AD LDS 工具功能。为此:

    • 单击管理并选择添加角色和功能。然后,在打开的向导中单击下一步,直到看到功能部分。
  • 展开远程服务器管理工具 -> 角色管理工具。然后,选中AD DS 和 AD LDS Tools 复选框并点击下一步进行安装。
  • 现在,确认 ADWS 在 services.msc 中可用;如果问题仍然存在,请重新启动服务器或域控制器。
  • 找不到服务器管理器控制台

    如果您的 Windows Server 操作系统上未安装服务器管理器控制台,您可能无法找到它。因此,对于这种情况,您需要 AD DS 和 AD LDS 工具功能,其中包括 ADWS 功能。为此:

    • 以管理员身份打开 PowerShell,然后运行 Install-WindowsFeature RSAT-AD-Tools 命令安装 AD DS 和 AD LDS 工具功能。
    • 运行上述命令将安装包含 AD DS 和 AD LDS 工具功能的 RSAT 功能。
    • 现在,打开 services.msc 并验证 ADWS 是否已成功安装。如果无法找到 ADWS,请重新启动域控制器或服务器。

    这就是如何在 PowerShell 中检查 AD 用户是否存在。

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

    取消回复欢迎 发表评论:

    关灯