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

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

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

如何在 Powershell 中使用 Get-ADComputer Cmdlet


获取 ADComputer Cmdlet

Get-ADComputer cmdlet 从 Active Directory 检索一台或多台计算机。

Get-ADComputer Cmdlet:语法

语法1:

Get-ADComputer -Filter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>] [-
SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]

语法2:

Get-ADComputer [-Identity] <ADComputer> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Partition <string>] [-Properties <string[]>] [-Server <string>]
[<CommonParameters>]

语法3:

Get-ADComputer -LDAPFilter <string> [-AuthType <ADAuthType>] [-Credential <pscredential>] [-Properties <string[]>] [-ResultPageSize <int>] [-ResultSetSize <int>
] [-SearchBase <string>] [-SearchScope <ADSearchScope>] [-Server <string>] [<CommonParameters>]

Get-ADComputer Cmdlet:关键参数

以下是 Get-ADComputer cmdlet 的关键参数:

  • 身份
  • 过滤器和 LDAPFilter
  • 特性
  • 搜索库
  • 搜索范围

请注意,您必须使用 Identity 参数、Filter 或 LDAPFilter 参数。

身份

使用此参数指定要检索的特定 Active Directory 计算机。如果找到两个或多个匹配对象,该命令将返回非终止错误。

Identity 参数接受以下形式的值:

  • GUID
  • 专有名称 (DN)
  • sam 帐户名
  • 安全识别码

或者,您可以通过管道提供计算机对象,或使用计算机对象变量,例如 $Computerobject。

例如,如果您的计算机名为 GroupID10Corp,您将使用以下命令:

Get-ADComputer -Identity GroupID10Corp

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

如果使用专有名称作为标识符,则它用于计算要搜索的分区。如果使用可分辨名称以外的标识符,则 cmdlet 将使用默认上下文,该上下文主要是登录用户或执行搜索的用户的连接域。

过滤器和 LDAPFilter

要检索多个计算机对象,请使用 Filter 参数或 LDAPFilter 参数:

  • 通过“筛选”选项,您可以使用 PowerShell 表达式语言为 Active Directory 编写查询字符串。 PowerShell 表达式语言语法中支持通过 Filter 参数获取的值类型进行丰富的类型转换。
  • 如果您的 LDAP 查询字符串已存在,则可以使用 LDAPFilter 参数。

筛选

使用“筛选器”参数可根据您指定的条件查找多个计算机帐户。例如,要查找名称以字符串 GID 开头的所有计算机,请使用以下命令:

Get-ADComputer -Filter "Name -like 'GID*'"

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

要检索目录中的所有计算机帐户,请使用通配符 (*) 字符,如下所示:

Get-ADComputer -Filter *

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

LDAP过滤器

如果您熟悉 LDAP,则可以使用 LDAPFilter 参数将您要查找的精确计算机归零。例如,此命令将查找以字母 Q 开头的所有计算机:

Get-ADComputer -LDAPFilter "(name=Q*)"

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

特性

默认情况下,Get-ADComputer cmdlet 检索每台计算机的名称和可分辨名称。虽然计算机对象没有用户和组对象那么多有用的属性,但还有一些其他有用的属性,例如:

  • 错误登录计数
  • 错误密码计数
  • IPv4地址
  • 启用
  • 最后注销
  • 上次登录日期
  • 登录次数
  • 操作系统
  • 操作系统版本
  • 创建时间

使用 Properties 参数获取这些属性,如下所示:

Get-ADComputer -identity EXCHKNOX -Properties LastLogonDate,IPv4Address,OperatingSystemVersion,OperatingSystem,WhenCreated

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

搜索库

使用 SearchBase 参数将搜索限制为仅一个 OU。例如,如果您想查看所有 DC,您可以将搜索限制为域控制器 OU。

必须在 SearchBase 参数中指定 OU 的专有名称 (DN)。下面是如何查找 Knox.lab 域中 computers OU 中的每个计算机帐户的示例:

Get-ADComputer -Filter * -SearchBase "CN=computers,DC=knox,DC=lab"

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

搜索范围

使用 SearchBase 参数,PowerShell 仅返回指定 OU 中的计算机帐户,而不返回任何子 OU 中的计算机帐户。使用 SearchScope 参数来控制搜索的深度:

  • 0基本 - 仅返回基本 OU 中的计算机
  • 1OneLevel - 返回基础 OU 及其直接子 OU 中的计算机
  • 2子树 - 返回基本 OU 和所有子 OU 中的计算机

例如,以下 cmdlet 将仅搜索指定的基本 OU 中的计算机:

Get-ADComputer -Filter * -SearchBase " OU=Computers OU,DC=Knox,DC=lab" -SearchScope OneLevel

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

以下 cmdlet 将查找基本 OU 及其所有子 OU 中的计算机对象:

Get-ADComputer -Filter * -SearchBase " OU=Computers OU,DC=Knox,DC=lab" -SearchScope SubTree

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

Get-ADComputer Cmdlet:示例

让我们看一下使用 Get-ADComputer cmdlet 的一些示例:

  • 根据操作系统获取计算机对象
  • 获取所有不活动的计算机
  • 获取 Active Directory 中所有已禁用或已启用的计算机
  • 将结果导出为 CSV
  • 将特定属性导出到 CSV
  • 将启用和禁用的计算机导出到 CSV

根据操作系统获取计算机对象

系统管理员经常需要查找具有给定操作系统 (OS) 版本的所有计算机,以便升级操作系统或应用策略。

以下 cmdlet 检索所有 Active Directory 计算机的名称和操作系统:

Get-ADComputer -filter * -Properties * | Select Name, OperatingSystem

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

要列出具有特定操作系统的所有计算机,请使用以下命令:

Get-ADComputer -Filter {OperatingSystem -like '*Windows Server 2016*'}

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

上述脚本按 Windows Server 2016 操作系统过滤计算机对象。

要获取有关驻留在特定 OU 中的计算机对象的操作系统的信息,请使用以下命令。 Get-ADComputer 检索特定 OU 中的计算机帐户,包括其操作系统。它将输出传递给第二个命令,该命令将信息格式化为表并按计算机名称对其进行排序。

Get-ADComputer -filter * -SearchBase "CN=Computers,DC=Knox,DC=lab" -Properties OperatingSystem | Sort Name | Format-Table Name,Enabled,OperatingSystem -AutoSize

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

要导出 cmdlet 的结果,请使用 Export-CSV cmdlet 以及要保存输出的位置,如下所示:

Get-ADComputer -filter * -Properties * | Select Name, OperatingSystem | Export-CSV C:\Computers.csv

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

通过 Get-ADComputer 获取所有不活动的计算机

您需要知道有多少台计算机未被使用吗?下面的脚本将查找所有空闲时间超过 90 天的计算机。首先,我们通过获取当前日期并减去 90 天来创建一个日期变量。然后,我们根据上次登录日期过滤 Get-ADComputer cmdlet。最后一行是 cmdlet 的替代版本,可提供更具可读性的输出。

$DesiredDate = (Get-Date) – (New-TimeSpan -Days 90)
Get-ADComputer -Filter ‘lastlogondate -lt $DesiredDate’ | ft
# Choose the canonicalName,lastlogondate and name for computers as a list.
Get-ADcomputer -Filter 'lastLogondate -lt $Desireddate' -properties lastlogondate, canonicalName | select lastlogondate,name,canonicalname | ft –AutoSize

获取 Active Directory 中所有已禁用或已启用的计算机

要获取 Active Directory 中所有已禁用或已启用计算机的列表,请分别使用以下 cmdlet:

Get-ADComputer -Filter "Enabled -eq 'False'" | ft

Get-ADComputer -Filter "Enabled -eq 'True'" | ft

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

将结果导出为 CSV

PowerShell 结果可以轻松导出到 CSV 文件以供进一步分析或报告。

使用以下命令将每个 AD 计算机对象导出到 CSV 文件:

Get-ADComputer -filter * | Export-CSV c:\computersdetail.csv -NoTypeInformation

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

将特定属性导出到 CSV

当您将 Filter 参数与通配符一起使用(如上所示)时,只会检索几个属性。以下命令将检索一组特定的属性并将结果导出到 CSV 文件以供进一步分析:

Get-ADComputer -filter * -properties operatingsystem,LastLogonDate,canonicalname | select name,canonicalname,operatingsystem,LastLogonDate | Export-CSV c:\computers.csv -NoTypeInformation

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

将启用和禁用的计算机导出到 CSV

之前,我们使用过滤器来搜索启用和禁用的计算机。以下是如何使用相同的过滤器并将结果列表导出到 CSV 文件。

支持导出的计算机

Get-ADComputer -filter "Enabled -eq 'true'" -properties operatingsystem,canonicalname,LastLogonDate | select name,operatingsystem,canonicalname,LastLogonDate | Export-CSV c:\computers.csv -NoTypeInformation

以下是 Active Directory 中所有启用的计算机的结果:

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

导出禁用的计算机

Get-ADComputer -filter "Enabled -eq 'false'" -properties operatingsystem,canonicalname,LastLogonDate | select name,operatingsystem,canonicalname,LastLogonDate | Export-CSV c:\computers.csv -NoTypeInformation

如果仔细查看LastLogonDate列,您将看到每台计算机上次用于登录的日期。

[玩转系统] 如何在 Powershell 中使用 Get-ADComputer Cmdlet

概括

Get-ADComputer cmdlet 是检索有关一台或多台计算机的信息的好方法。例如,您可以快速列出具有特定操作系统的所有计算机对象,以便于安全更新或生命周期结束取消配置,或者发现所有不活动或禁用的计算机以通知您的 Active Directory 清理过程。这可以通过 Netwrix GroupID 最好地实现。

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

取消回复欢迎 发表评论:

关灯