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

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

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

在 Active Directory 中使用 Get-ADObject Powershell Cmdlet


介绍

Get-ADUser PowerShell cmdlet 提供了一种从 Active Directory 检索用户信息的简单方法。例如,您可以快速获取所有即将过期或已经过期的 AD 帐户的列表。

本文提供了此 cmdlet 的语法,然后深入介绍了三个最常用的参数。

获取 ADObject:描述

Get-ADObject cmdlet 连接到 AD 域控制器或轻量级目录服务 (LDS) 服务器并检索有关一个或多个 Active Directory 对象的数据:

  • 检索单个对象 - 要检索有关特定 AD 对象的信息,您可以使用 Identity 参数指定该对象,使用管道将对象提供给 Identity 参数,或者将 Identity 参数分配给AD 对象变量。
  • 检索多个对象 - 要检索多个对象,您可以使用 Filter 参数指定查询字符串,或者如果您的查询字符串已存在,则使用 LDAPFilter 参数。

Get-ADObject:语法

Get-ADObject cmdlet 的语法如下:

New-ADObject [-Name] <string> [-Type] <string> [-WhatIf] [-Confirm] [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Description <string>] [-DisplayName <string>] [-Instance <ADObject>] [-OtherAttributes <hashtable>] [-PassThru] [-Path <string>] [-ProtectedFromAccidentalDeletion <bool>] [-Server <string>] [<CommonParameters>]

以下是使用三个参数的 Get-ADObject cmdlet 语法示例:

Get-ADObject -LDAPFilter "(objectClass=site)" -SearchBase 'CN=Configuration,DC=Fabrikam,DC=Com' -Properties CanonicalName | FT Name,CanonicalName

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

获取 ADObject:参数

以下是一些需要了解的关键参数。

前 3 个参数

Get-ADObject cmdlet 的三个最常用参数是:

  • -Identity:使用唯一标识符(例如其专有名称、SID 或 GUID)指定要检索的特定对象
  • -Filter:用于指定 PowerShell 表达式语言中的查询以选择 AD 对象
  • -LDAPFilter:用于指定用于选择 AD 对象的 LDAP 查询字符串

以下部分更详细地探讨这三个参数。

其他有用的参数

其他有用的参数包括:

  • -AuthType:用于分配身份验证方法(基本或协商)
  • -Credential:用于提供执行 cmdlet 的备用凭据
  • -IncludeDeletedObjects:用于在结果中包含已删除的对象和停用的链接
  • -Properties:指定除了默认属性之外还应从服务器返回的任何对象属性(要获取 AD 对象的默认属性集列表,请使用以下命令:Get- ADObject| 获取成员)
  • -分区:将搜索限制为指定的 Active Directory 分区
  • -ResultPageSize:定义每个页面上显示的对象数量
  • -ResultSetSize:指定要返回的最大对象数(默认为 1,000)
  • -SearchBase:指定要搜索的 Active Directory 路径 (OU)
  • -SearchScope:定义要搜索的 OU 的子级别数:(Base 或 0、OneLevel 或 1、Subtree 或 2)
  • -服务器:指定从中获取结果的 AD DS 实例。值可以是服务器的完全限定域名或 NetBIOS 名称。您还可以将端口与 FQDN 一起使用。

使用身份参数

Identity 参数用于获取 cmdlet 对其执行进一步操作的对象。该 cmdlet 会查找默认分区或命名上下文来查找对象。如果发现两个或多个对象,则返回非终止错误。

此参数的值通常是可分辨名称,但也可以使用其他常见属性,例如 name、samAccountName 和 GUID。

Get-ADObject –Identity “AbbeyCrawford” –Server “dcexch2013.milkyway.local”

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

上面的命令还使用了-Server参数,它将范围从目录缩小到特定的目录服务器。

使用过滤器参数

Filter 参数非常强大 - 您可以指定复杂的查询字符串来检索所需的 AD 对象。

过滤器参数的运算符

OperatorMeaningExample-eqEqual toName -eq ‘Inga’-neNot equal toCountry -ne ‘US’-gtGreater thanBadLogonCount -gt ‘0’-geGreater than or equalModified -ge ’06-04-2022 12:00:00?-ltLess thanLastLogonTimeStamp -lt ’01-08-2021?-leLess than or equalCreated -le ’01-08-2020?-likeMatching a wildcard patternMail -like ‘*@xyz.com’-notlikeNot matching a wildcard patternDepartment -notlike ‘*’-andAndCountry -eq ‘US’ -and Department -eq ‘Operations’-orOrCountry -eq ‘US’ -or -Country -eq ‘UK’

示例 1:获取 AD 计算机对象

要从 Active Directory 检索计算机对象,请使用以下命令:

Get-ADObject -Filter {(objectClass -eq "user") -and (objectCategory -eq "computer")}

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

请注意,此示例使用 -and 运算符指定两个过滤器:

  • 第一个定义对象类(即用户,因为计算机对象属于用户对象类)
  • 第二种使用对象类别将结果限制为计算机对象。

示例2:获取AD用户对象

我们可以使用与计算机对象相同的过滤器来获取有关域中所有用户的信息,只需将对象类别更改为用户

Get-ADObject -Filter {(objectClass -eq "user") -and (objectCategory -eq "user")}

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

请注意,输出显示每个 AD 用户的专有名称、用户名、对象类和 GUID。

示例 3:从特定 OU 获取 AD 对象

要从特定 OU 获取对象,请使用 -SearchBase 参数指定 OU 的可分辨名称:

Get-ADObject -Filter * -SearchBase 'OU=NBC,DC=milkyway,DC=local'

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

示例 4:查找 Active Directory 联系人

要获取联系人对象,请将对象类更改为联系人。这里我们还使用 -Properties 参数在输出中包含每个联系人的 CN:

Get-ADObject -Filter 'objectClass -eq "contact"' -Properties CN | Format-List CN

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

示例 5:通过将 SID 分配给变量来查找 AD 用户

在这里,我们将用户的 SID(安全标识符)分配给变量 $ObjectSid 并使用它来检索该用户的选定属性:

$ObjectSid = 'S-1-5-21-2144973983-3571309751-2556536001-2005'
Get-ADObject -Filter "objectSid -eq '$ObjectSid'" -Properties * | Select-Object name,distinguishedname,samaccountname,userprincipalname

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

在上面的脚本中,用户帐户的 SID 存储在 $ObjectSID 变量中。 Get-ADObject cmdlet 使用筛选运算符 -eq 查询 $ObjectSID 并将输出传递到 Select-Object cmdlet。然后,第二个 cmdlet 打印根据 SID 返回的对象的所需属性。

使用 LDAPFilter 参数

LDAPFilter 参数与 Filter 参数类似,不同之处在于您必须利用 Active Directory 架构属性来检索必要的数据。

示例 1:列出所有 AD 站点

例如,您必须使用“ObjectClass”属性来搜索 Active Directory 中的所有站点。例如,以下命令将列出所有 Active Directory 站点及其关联属性

Get-ADObject –LDAPFilter “(ObjectClass=Site)” –SearchBase “CN=Configuration,DC=Virgo,DC=Local”

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

示例 2:列出所有 OU

同样,要检索 OU 列表,您必须将“ObjectCategory”指定为“OrganizationalUnit”。

Get-ADObject –LDAPFilter "(ObjectCategory=OrganizationalUnit)" –SearchBase "DC=Virgo,DC=Local"

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

示例 3:列出所有 DC

以下命令将使用该组的 PrimaryGroupID (516) 显示主安全组为域控制器的计算机对象:

Get-ADObject –LDAPFilter "(&(ObjectCategory=Computer)(PrimaryGroupID=516))" –SearchBase "DC=Virgo,DC=Local"

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

示例 4:列出全局组

使用以下命令获取全局组的信息:

Get-ADObject –LDAPFilter "(GroupType:1.2.840.113556.1.4.803:=2)" –SearchBase "DC=Virgo,DC=Local"

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

将结果导出到 CSV 文件

要将任何 PowerShell cmdlet 的输出导出到 CSV 文件而不是在 PowerShell 控制台中显示,只需将结果通过管道传输到带有文件名目标的 Export-CSV cmdlet,如下所示:

Get-ADObject -Filter 'objectClass -eq "container"' | Export-Csv -Path C:\TestFolder\containers.csv

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

其他示例

下面是 Get-ADObject cmdlet 的一些其他示例,其中包含前面讨论的参数以及 Excel 中显示的结果:

Get-ADObject –LDAPFilter "(ObjectClass=Site)" –SearchBase "CN=Configuration,DC=Virgo,DC=Local" | Export-Csv -Path C:\TestFolder\sites.csv

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

Get-ADObject –LDAPFilter "(&(ObjectCategory=Computer)(PrimaryGroupID=516))" –SearchBase "DC=Virgo,DC=Local" | Export-Csv -Path C:\TestFolder\computer.csv

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

Get-ADObject –LDAPFilter "(GroupType:1.2.840.113556.1.4.803:=2)" –SearchBase "DC=Virgo,DC=Local" | Export-Csv -Path C:\TestFolder\GlobalGroups.csv

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

Get-ADObject –LDAPFilter "(ObjectCategory=OrganizationalUnit)" –SearchBase "DC=Virgo,DC=Local" | Export-Csv -Path C:\TestFolder\OrganizationalUnits.csv

[玩转系统] 在 Active Directory 中使用 Get-ADObject Powershell Cmdlet

结论

Get-ADObject cmdlet 是用于检索有关 Active Directory 对象信息的强大工具。请务必亲自尝试此处描述的三个参数 — Identity、Filter 和 LDAPFilter — 以及 SearchBase 等参数,以将搜索限制为特定 OU。您将快速学习如何创建命令来检索许多不同情况下所需的信息。

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

取消回复欢迎 发表评论:

关灯