查看: 392|回复: 0

[转载图文] Active Directory PowerShell

[复制链接]
发表于 2020-10-18 20:06:45 | 显示全部楼层 |阅读模式

文章前言  Microsoft为Windows Server 2008 R2以及更高版本提供了多个Active Directory PowerShell cmdlet,例如:Get-Aduser、Get-Adcomputer和Get-a object等等,这些cmdlet可以帮助我们检索AD的许多信息,本篇文章主要介绍通过Windows Server 2008 R2/2012/2016或更高版本下通过Active Directory PowerShell cmdlet来进行域内信息收集的方法。
使用前提  在使用Windows客户端上使用时,我们需要安装远程服务器管理工具(RSAT)并确保已安装Active Directory PowerShell模块,否则在导入模块时会出现以下报错提示:

Active Directory PowerShell

Active Directory PowerShell

关于确认是否已经安装Active Directory PowerShell我们可以通过以下命令来查看是否包含ActiveDirectory模块
Get-Module -ListAvailable

Active Directory PowerShell

Active Directory PowerShell

在Windows Server 2008 R2或者更高的版本的powershell控制台我们需要在使用之前执行以下命令将模块作为功能添加到服务器管理器中:
Import-Module ServerManager
Add-WindowsFeature RSAT-AD-PowerShell

Active Directory PowerShell

Active Directory PowerShell

下面的演示接在Windows Server 2012上进行~
简易示例  powershell v2.0及之前powershell版本,我们在使用时需要先导入ActiveDirectory模块,下面是一个简易的AD PowerShell cmdlet使用示例:
Import-Module ActiveDirectory
$UserID = "Al1ex"
Get-ADUser $UserID –property *

Active Directory PowerShell

Active Directory PowerShell

在PowerShell v3版本以及高版本,无需运行第一行命令,因为PowerShell将识别必要的模块和自动加载它,而且一旦加载了Active Directory PowerShell模块,就可以像浏览文件系统那样浏览AD,例如:
Ps> Import-module ActiveDirectory
Ps> dir ad:
Ps> set-location ad:
Ps> set-location  "dc=hacke,dc=testlab"
Ps> dir

Active Directory PowerShell

Active Directory PowerShell
基本模块  PowerShell AD模块的Cmdlet个数在各个操作系统中如下:
  • Windows Server 2008 R2: 76 cmdlets
  • Windows Server 2012: 135 cmdlets
  • Windows Server 2012 R2: 147 cmdlets
  • Windows Server 2016: 147 cmdlets
  可以通过在powershell中执行以下命令来查看:
(Get-Command -module ActiveDirectory).count

Active Directory PowerShell

Active Directory PowerShell

WINDOWS SERVER 2008 R2主要的cmdlets:
  • Get/Set-ADForest
  • Get/Set-ADDomain
  • Get/Set-ADDomainController
  • Get/Set-ADUser
  • Get/Set-ADComputer
  • Get/Set-ADGroup
  • Get/Set-ADGroupMember
  • Get/Set-ADObject
  • Get/Set-ADOrganizationalUnit
  • Enable-ADOptionalFeature
  • Disable/Enable-ADAccount
  • Move-ADDirectoryServerOperationMasterRole
  • New-ADUser
  • New-ADComputer
  • New-ADGroup
  • New-ADObject
  • New-ADOrganizationalUnit
  WINDOWS SERVER 2012含以版本一些新的cmdlets:
  • Get/Set-ADResourcePropertyListMember
  • Get/Set-ADAuthenticationPolicy
  • Get/Set-ADAuthenticationPolicySilo
  • Get/Set-ADCentralAccessPolicy
  • Get/Set-ADCentralAccessRule
  • Get/Set-ADResourceProperty
  • Get/Set-ADResourcePropertyList
  • Get/Set-ADResourcePropertyValueType
  • Get/Set-ADDCCloneConfigFile
  • Get/Set-ADReplicationAttributeMetadata
  • Get/Set-ADReplicationConnection
  • Get/Set-ADReplicationFailure
  • Get/Set-ADReplicationPartnerMetadata
  • Get/Set-ADReplicationQueueOperation
  • Get/Set-ADReplicationSite
  • Get/Set-ADReplicationSiteLink
  • Get/Set-ADReplicationSiteLinkBridge
  • Get/Set-ADReplicationSubnet
  • Get/Set-ADReplicationUpToDatenessVectorTable
  • Sync-ADObject
  我们可以通过在powershell下执行以下命令查看当前ActiveDirectory可用的cmdlet:
Get-Command -module ActiveDirectory

Active Directory PowerShell

Active Directory PowerShell
全局目录森林全局目录
Import-Module ActiveDirectory
Get-ADForest
$ADForest.GlobalCatalogs

Active Directory PowerShell

Active Directory PowerShell
域DCS全局目录
Import-Module ActiveDirectory
Get-ADDomainController -filter { IsGlobalCatalog -eq $True}

Active Directory PowerShell

Active Directory PowerShell
非域DCS全局目录
Import-Module ActiveDirectory
Get-ADDomainController -filter { IsGlobalCatalog -eq $False }

Active Directory PowerShell

Active Directory PowerShell
基本使用Get-ADForest  Get-ADForest用于获取森林信息,使用示例如下:
示例一:获取当前林信息
Import-Module ActiveDirectory
Get-ADForest

Active Directory PowerShell

Active Directory PowerShell

也可以通过以下指令来获取:
Get-ADForest -Current LocalComputer

Active Directory PowerShell

Active Directory PowerShell
示例二:获取登录用户所处林信息
Get-ADForest -Current LoggedOnUser

Active Directory PowerShell

Active Directory PowerShell
示例三:获取指定域的林信息
Get-ADForest hacke.testlab

Active Directory PowerShell

Active Directory PowerShell
Get-ADRootDSE  Get-ADRootDSE用于获取有关LDAP服务器的信息,使用示例如下:
Get-ADRootDSE

Active Directory PowerShell

Active Directory PowerShell
Get-ADDomain  Get-ADDomain用户获取域的信息,常用示例如下:
示例一:获取指定域信息
Get-ADDomain hacke.testlab

Active Directory PowerShell

Active Directory PowerShell
示例二:获取当前域信息
Get-ADDomain -Current LocalComputer

Active Directory PowerShell

Active Directory PowerShell
示例三:获取当前登录域信息
Get-ADDomain -Current LoggedOnUser

Active Directory PowerShell

Active Directory PowerShell
Get-ADDomainController  Get-ADDomainController用于获取域控信息,示例如下:
示例一:获取当域控信息
Get-ADDomainController

Active Directory PowerShell

Active Directory PowerShell
示例二:使用discovery查看可用DC
Get-ADDomainController -Discover -Site "Default-First-Site-Name"

Active Directory PowerShell

Active Directory PowerShell

或者也可以使用以下指令来查询:
Get-ADDomainController -Discover -Site "Default-First-Site-Name" -ForceDiscover

Active Directory PowerShell

Active Directory PowerShell
示例三:获取给定站点中的所有全局目录

Active Directory PowerShell

Active Directory PowerShell
Get-ADComputer  Get-AdComputer用于获取关于AD中计算机对象的信息,使用示例如下:
示例一:获取域中指定计算机信息
Get-ADComputer "WIN7-test" -Properties *

Active Directory PowerShell

Active Directory PowerShell
示例二:获取域中所有的计算机主机
Get-ADComputer -Filter *

Active Directory PowerShell

Active Directory PowerShell
Get-ADUser  Get-ADUser用于获取AD用户的信息,使用示例如下:
示例一:获取指定用户所有信息
Get-ADUser Al1ex -Properties *

Active Directory PowerShell

Active Directory PowerShell
示例二:模糊查询域用户账户
Get-ADUser -Filter 'Name -like "*Al1*"' | FT Name,SamAccountName -A

Active Directory PowerShell

Active Directory PowerShell

这其实也可以这样用:
Get-ADUser -Filter 'Name -like "*Al1*"' | FT Name,SamAccountName -A

Active Directory PowerShell

Active Directory PowerShell
示例三:获取AD Kerberos服务帐户
Get-ADUser -filter {ServicePrincipalName -like "*"} -property ServicePrincipalName

Active Directory PowerShell

Active Directory PowerShell
Get-ADGroup  Get-ADGroup用于获取AD组的信息,使用示例如下:
示例一:特定用户组信息
Get-ADGroup administrators

Active Directory PowerShell

Active Directory PowerShell
示例二:获取用户组成员
get-adgroup -Identity S-1-5-32-544 -Properties member

Active Directory PowerShell

Active Directory PowerShell
示例三:获取所有安全组信息
get-adgroup -Filter 'GroupCategory -eq "Security" -and GroupScope -ne "DomainLocal"'  //除去DomainLocal

Active Directory PowerShell

Active Directory PowerShell
Get-ADGroupMember  Get-ADGroupMember用于获取AD组成员信息,使用示例如下:
示例一:获取Administrator组成员信息
get-adgroupmember -Identity administrators

Active Directory PowerShell

Active Directory PowerShell
示例二:获取Enterprise Admins成员信息
get-adgroupmember "Enterprise Admins" -recursive

Active Directory PowerShell

Active Directory PowerShell
Get-ADDefaultDomainPasswordPolicy  Get-ADDefaultDomainPasswordPolicy用于获取当前域密码策略,使用示例如下:
示例一:获取域用户密码策略
Get-ADDefaultDomainPasswordPolicy -Current LoggedOnUser

Active Directory PowerShell

Active Directory PowerShell
示例二:获取指定域密码策略
Get-ADDefaultDomainPasswordPolicy -Identity hacke.testlab

Get-ADReplicationSite  Get-ADReplicationSite用于获取AD站点信息,示例如下:
Get-ADReplicationSite -Filter *

Active Directory PowerShell

Active Directory PowerShell
Get-ADPrincipalgroupmembership  get-adprincipalgroupmembership用于检索用户所属的组信息,使用示例如下:
Get-ADPrincipalgroupmembership -Identity Administrator

Active Directory PowerShell

Active Directory PowerShell
Get-ADTrust  Get-ADTrust用于获取域信任关系,示例如下(笔者这里为单域,所以信息为空)
Get-ADTrust -Filter *

Active Directory PowerShell

Active Directory PowerShell
参考链接  https://adsecurity.org/?p=3719
https://docs.microsoft.com/en-us ... ew=winserver2012-ps
https://adsecurity.org/wp-conten ... ctoryPowerShell.pdf


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。

相关帖子

论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表