PowerShell命令之AD域控
PowerShell命令之AD域控
环境简介
Windows Server 2012R2
域控:TEST.COM
OU:OU=Corporation,DC=TEST,DC=COM
用户的创建,删除,修改,禁用和启用
创建用户:New-ADUser
New-ADUser -path "OU=Corporation,DC=TEST,DC=COM" -name "张小明" -Surname "李" -GivenName "小明" -SamAccountName michaelzhang -userPrincipalName [email protected] -EmailAddress [email protected] -department GZIT -displayname "Michael Zhang Xiao Ming 张小明 (GZIT)" -description "张小明" -manager jamesli -accountpassword (convertto-securestring "PassWord123$%^" -asplaintext -force) -enabled $true -PasswordNeverExpires $true
解释:
-path #指定OU路径,必须设置
-name #名字,必须设置
-Surname #姓
-GivenName #名
-SamAccountName #账户,必须设置
-userPrincipalName #登陆名,必须设置
-EmailAddress #邮箱地址
-department # 部门
-employeeID #工号
-displayname # 显示名,必须设置
-description #描述
-manager #上级领导
-accountpassword (convertto-securestring "123456" -asplaintext -force) -enabled $true -PasswordNeverExpires $true #设置密码123456,并启用用户,必须设置
其他属性:
-OfficePhone#座机号码
-postalCode#邮政编码
-State#省份
-City#市级
-StreetAddress#具体地址
删除用户:Remove-ADUser
Remove-ADUser -Identity michaelzhang
解释:
-Identity
Distinguished Name
Example: CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
GUID (objectGUID)
Example: 599c3d2e-f72d-4d20-8a88-030d99495f20
Security Identifier (objectSid)
Example: S-1-5-21-3165297888-301567370-576410423-1103
SAM account name (sAMAccountName)
Example: saradavis
修改用户:Set-ADUser
Set-ADUser michaelzhang -City "广州市" -State "广东省"
解释:修改用户所取的属性值Identity 可省略:
Distinguished Name
Example: CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
GUID (objectGUID)
Example: 599c3d2e-f72d-4d20-8a88-030d99495f20
Security Identifier (objectSid)
Example: S-1-5-21-3165297888-301567370-576410423-1103
SAM account name (sAMAccountName)
Example: saradavis
其他cmdlet parameters没有的属性:
请使用Add, Remove, Replace and Clear,可以通过指定逗号分隔的列表来修改多个属性
请注意:
When you use the Add, Remove, Replace and Clear parameters together, the operations will be performed in the following order:(当您同时使用添加、删除、替换和清除参数时,操作将按以下顺序执行:)
..Remove #移除一个或者多个值,-Remove @{otherTelephone='555-222-2222','555-222-4444'}
..Add #增加一个或者多个值,-Add @{otherTelephone='555-222-1111', '555-222-3333'; otherMobile='555-222-9999' }
..Replace #将已有的一个或者多个全部值替换新的一个或者多个值,-Replace @{otherTelephone='555-222-2222'}
..Clear #清除一个或者多个属性的所有值,-Clear otherTelephone,FavColors
详细命令如下:
Set-ADUser GlenJohn -Replace @{title="director";mail="[email protected]"}
Set-ADUser GlenJohn -Remove @{otherMailbox="glen.john"} -Add @{url="fabrikam.com"} -Replace @{title="manager"} -Clear description
禁用用户:Disable-ADAccount
Disable-ADAccount -Identity michaelzhang
解释:
-Identity:
Distinguished Name
Example: CN=SaraDavis ,CN=Users,DC=corp,DC=contoso,DC=com
GUID (objectGUID)
Example: 599c3d2e-f72d-4d20-8a88-030d99495f20
Security Identifier (objectSid)
Example: S-1-5-21-3165297888-301567370-576410423-1103
SAM Account Name (sAMAccountName)
Example: saradavis
启用用户:Enable-ADAccount
Enable-ADAccount -Identity michaelzhang
解释:
-Identity:
Distinguished Name
Example: CN=SaraDavis ,CN=Users,DC=corp,DC=contoso,DC=com
GUID (objectGUID)
Example: 599c3d2e-f72d-4d20-8a88-030d99495f20
Security Identifier (objectSid)
Example: S-1-5-21-3165297888-301567370-576410423-1103
SAM Account Name (sAMAccountName)
Example: saradavis
组织单元(OU)的创建,删除,修改和查询
创建OU:New-ADOrganizationalUnit
New-ADOrganizationalUnit -Name GZIT -Path "OU=Corporation,DC=TEST,DC=COM" -Description "广州IT" -DisplayName "广州IT" -ProtectedFromAccidentalDeletion $True
解释:
创建一个名为“UserAccounts”的新组织单元,默认防止意外删除(-ProtectedFromAccidentalDeletion $True)。
其他可添加的属性:
-City #市级
-Country "CN" #国家中国
-Description #描述
-DisplayName #显示名
-State #省份
-StreetAddress #具体地址
修改OU:Set-ADOrganizationalUnit
Set-ADOrganizationalUnit -Identity "ou=gzit,OU=Corporation,DC=TEST,DC=COM" -ProtectedFromAccidentalDeletion $True
解释:
-Identity
A distinguished name
A GUID (objectGUID)
其他可修改的属性:
-City #市级
-Country "CN" #国家中国
-Description #描述
-DisplayName #显示名
-State #省份
-StreetAddress #具体地址
删除OU:Remove-ADOrganizationalUnit
要删除OU,必须设置移除防止意外删除:
Set-ADOrganizationalUnit -Identity "ou=gzit,OU=Corporation,DC=TEST,DC=COM" -ProtectedFromAccidentalDeletion $False
然后才能删除一个OU及其子元素(-Recursive):
Remove-ADOrganizationalUnit -Identity "ou=gzit,OU=Corporation,DC=TEST,DC=COM" -Recursive
查询OU:Get-ADOrganizationalUnit
1.已知道OU:OU=GZIT,OU=Corporation,DC=TEST,DC=COM
例子1:
Get-ADUser -Identity "OU=GZIT,OU=Corporation,DC=TEST,DC=COM"
解释:默认返回的结果的属性和值只有如下几个:
City :
Country :
DistinguishedName : OU=GZIT,OU=Corporation,DC=TEST,DC=COM
LinkedGroupPolicyObjects : {}
ManagedBy :
Name : GZIT
ObjectClass : organizationalUnit
ObjectGUID : da395c2e-c69c-4052-9331-fba820201726
PostalCode :
State :
StreetAddress :
例子2:
Get-ADOrganizationalUnit -Identity "OU=GZIT,OU=Corporation,DC=TEST,DC=COM" -Properties *
或者命令:
Get-ADOrganizationalUnit -Identity "OU=GZIT,OU=Corporation,DC=TEST,DC=COM" -Properties State,City
解释:
-Properties #使用此参数检索未包含在默认设置中的属性。要检索和显示的所有属性列表,请使用以下命令::Get-ADUser -Identity michaelzhang -Properties * | Get-Member
例子3.可以通过管道符{|Format-Table(可简写|ft)}指定显示的属性并且格式化缩进(-A)
例如:
Get-ADOrganizationalUnit -Identity "OU=GZIT,OU=Corporation,DC=TEST,DC=COM" -Properties * | Format-Table name,State -A
如下为显示结果:
name State
---- -----
GZIT
2.-Filter 指定检索activedirectory对象的查询字符串:
::= "{" "}" #建议用单引号,少用{}
::= | |
::=
::= "-eq" | "-le" | "-ge" | "-ne" | "-lt" | "-gt"| "-approx" | "-bor" | "-band" | "-recursivematch" | "-like" | "-notlike"
::= "-and" | "-or" #-and都为真,则真,否则假;-or有一个为真,则真,否者为假
::= "-not" #取反:Get-ADOrganizationalUnit -Filter '-NOT Name -like "GZ*"'
::= | #属性,取其值跟value进行对比
::= <compare this value with an by using the specified >#值,跟属性进行对比
解释:
:
"-eq" #等于
"-le" #小于等于
"-ge" # 大于等于
"-ne" #不等于
"-lt" #小于
"-gt" #大于
"-approx" #
"-bor" #
"-band" #
"-recursivematch" #
"-like" #相似
"-notlike" #不相似
多个条件查询:
Get-ADOrganizationalUnit -Filter 'Name -like "GZ*" -and displayname -like "广州*"' -Properties displayname
关于更多的例子请查看如下链接:about_ActiveDirectory_Filter
群组(Group)的创建,删除,修改和查询
创建Group:New-ADGroup
New-ADGroup -Name "GZIT" -SamAccountName GZIT -GroupCategory Security -GroupScope DomainLocal -DisplayName "GZIT 广州IT部" -Path "OU=CorporationGroup,DC=TEST,DC=COM" -Description "GZIT 广州IT部"
解释:
-Name #名称
-SamAccountName #登陆名
-GroupCategory #组类别(安全:Security or 1;通讯组:Distribution or 0)
-GroupScope#组作用域(本地域:DomainLocal or 0;全局:Global or 1;通用:Universal or 2)
-DisplayName #显示名
-Path #OU位置
-Description #描述
删除Group:Remove-ADGroup
Remove-ADGroup -Identity GZIT
解释:
-Identity
A distinguished name
A GUID (objectGUID)
A security identifier (objectSid)
A Security Account Manager account name (sAMAccountName)
修改Group:Set-ADGroup
Set-ADGroup -Identity gzit -Description "GZIT 广州技术部" -DisplayName "GZIT 广州技术部"
解释:修改用户所取的属性值Identity 可省略:
Distinguished Name
Example: CN=SaraDavis,CN=Europe,CN=Users,DC=corp,DC=contoso,DC=com
GUID (objectGUID)
Example: 599c3d2e-f72d-4d20-8a88-030d99495f20
Security Identifier (objectSid)
Example: S-1-5-21-3165297888-301567370-576410423-1103
SAM account name (sAMAccountName)
Example: saradavis
其他cmdlet parameters没有的属性:
请使用Add, Remove, Replace and Clear,可以通过指定逗号分隔的列表来修改多个属性
请注意:
When you use the Add, Remove, Replace and Clear parameters together, the operations will be performed in the following order:(当您同时使用添加、删除、替换和清除参数时,操作将按以下顺序执行:)
..Remove #移除一个或者多个值,-Remove @{otherTelephone='555-222-2222','555-222-4444'}
..Add #增加一个或者多个值,-Add @{otherTelephone='555-222-1111', '555-222-3333'; otherMobile='555-222-9999' }
..Replace #将已有的一个或者多个全部值替换新的一个或者多个值,-Replace @{otherTelephone='555-222-2222'}
..Clear #清除一个或者多个属性的所有值,-Clear otherTelephone
详细命令如下
Set-ADGroup -Identity gzit -Replace @{mail="[email protected]"}
查询Group:Get-ADGroup
1.已知道:Group:gzit
例子1
Get-ADGroup -Identity gzit
解释:默认返回的结果的属性和值只有如下几个:
DistinguishedName : CN=GZIT,OU=CorporationGroup,DC=TEST,DC=COM
GroupCategory : Security
GroupScope : DomainLocal
Name : GZIT
ObjectClass : group
ObjectGUID : cda77835-c53b-476c-b37d-46bd87217685
SamAccountName : GZIT
SID : S-1-5-21-244923085-1092734215-2872993527-1107
例子2
Get-ADGroup -Identity gzit -Properties *
或者命令:
Get-ADGroup -Identity gzit -Properties mail
解释:
-Properties #使用此参数检索未包含在默认设置中的属性。
要检索和显示的所有属性列表,请使用以下命令::
Get-ADGroup -Identity gzit -Properties * | Get-Member
例子3:可以通过管道符{|Format-Table(可简写|ft)}指定显示的属性并且格式化缩进(-A)
Get-ADGroup -Identity gzit -Properties * | Format-Table name,mail -A
如下为显示结果:
name mail
---- ----
GZIT [email protected]
2.-Filter 指定检索activedirectory对象的查询字符串:
<filter> ::= "{" <FilterComponentList> "}" #建议用单引号,少用{}
<FilterComponentList> ::= <FilterComponent> | <FilterComponent> <JoinOperator> <FilterComponent> | <NotOperator> <FilterComponent>
<FilterComponent> ::= <attr> <FilterOperator> <value>
<FilterOperator> ::= "-eq" | "-le" | "-ge" | "-ne" | "-lt" | "-gt"| "-approx" | "-bor" | "-band" | "-recursivematch" | "-like" | "-notlike"
<JoinOperator> ::= "-and" | "-or" #-and都为真,则真,否则假;-or有一个为真,则真,否者为假
<NotOperator> ::= "-not" #取反:Get-ADGroup -Filter '-not mail -like "gzit*"'
<attr> ::= <PropertyName> | <LDAPDisplayName of the attribute> #属性,取其值跟value进行对比
<value>::= <compare this value with an <attr> by using the specified <FilterOperator>>#值,跟属性进行对比
解释:
<FilterOperator>:
"-eq" #等于
"-le" #小于等于
"-ge" # 大于等于
"-ne" #不等于
"-lt" #小于
"-gt" #大于
"-approx" #
"-bor" #
"-band" #
"-recursivematch" #
"-like" #相似
"-notlike" #不相似
多个条件查询:
Get-ADGroup -Filter ' mail -like "gzit*" -and name -like "gzit"'
关于更多的例子请查看如下链接:about_ActiveDirectory_Filter
查询AD用户、计算机和服务帐户
Search-ADAccount
Gets Active Directory user, computer, or service accounts.
获取活动目录用户、计算机或服务帐户。
Examples
-------------------------- EXAMPLE 1 --------------------------
Search-ADAccount -AccountDisabled | FT Name,ObjectClass -A
解释:
返回所有禁用的用户、计算机和服务帐户。
-------------------------- EXAMPLE 2 --------------------------
Search-ADAccount -AccountDisabled -UsersOnly | FT Name,ObjectClass -A
解释:
返回所有禁用的用户。
-------------------------- EXAMPLE 3 --------------------------
Search-ADAccount -AccountExpired | FT Name,ObjectClass -A
解释:
返回所有已过期的用户、计算机和服务帐户。
-------------------------- EXAMPLE 4 --------------------------
Search-ADAccount -AccountExpiring -TimeSpan 6.00:00:00 | FT Name,ObjectClass -A
解释:
返回所有将在未来6天内到期的用户、计算机和服务帐户。
-------------------------- EXAMPLE 5 --------------------------
Search-ADAccount -AccountInactive -TimeSpan 90.00:00:00 | FT Name,ObjectClass -A
解释:
返回所有在过去90天内不活跃的帐户。
-------------------------- EXAMPLE 6 --------------------------
Search-ADAccount -AccountExpiring -DateTime "3/18/2009" | FT Name,ObjectClass -A
解释:
返回2009年3月18日到期的所有帐户。
还要一些其他选项如下:
-AccountDisabled #返回所有禁用的用户、计算机和服务帐户。
-UsersOnly #查询用户,非计算机和服务账户.
-ComputersOnly #查询计算机,非用户和服务账号
-AccountDisabled #禁用的用户、计算机或服务帐户
-PasswordExpired #返回所有带有永不过期密码的帐户。
-PasswordNeverExpires #返回所有带有永不过期密码的帐户。
-LockedOut #返回所有被锁定的帐户
查询用户,重置用户密码
查询用户:Get-ADUser
1.已知道登录名:michaelzhang
例子1
Get-ADUser -Identity michaelzhang
解释:默认返回的结果的属性和值只有如下几个:
DistinguishedName : CN=张小明,OU=Corporation,DC=TEST,DC=COM
Enabled : False
GivenName : 小明
Name : 张小明
ObjectClass : user
ObjectGUID : a4b8132b-9a0f-4204-b1a1-6dfccb50c9f5
SamAccountName : michaelzhang
SID : S-1-5-21-244923085-1092734215-2872993527-1104
Surname : 李
UserPrincipalName : [email protected]
例子2
Get-ADUser -Identity michaelzhang -Properties *
或者命令:
GetADUser -Identity michaelzhang -Properties OfficePhone,Organization
解释:
-Properties #使用此参数检索未包含在默认设置中的属性。
要检索和显示的所有属性列表,请使用以下命令::
Get-ADUser -Identity michaelzhang -Properties * | Get-Member
例子3
可以通过管道符{|Format-Table(可简写|ft)}指定显示的属性并且格式化缩进(-A)
例如:
Get-ADUser -Identity michaelzhang -Properties * | Format-Table name,Emailaddress -A
如下为显示结果:
name Emailaddress
-------- ------------
张小明 [email protected]
2.-Filter 指定检索activedirectory对象的查询字符串:
<filter> ::= "{" <FilterComponentList> "}" #建议用单引号,少用{}
<FilterComponentList> ::= <FilterComponent> | <FilterComponent> <JoinOperator> <FilterComponent> | <NotOperator> <FilterComponent>
<FilterComponent> ::= <attr> <FilterOperator> <value>
<FilterOperator> ::= "-eq" | "-le" | "-ge" | "-ne" | "-lt" | "-gt"| "-approx" | "-bor" | "-band" | "-recursivematch" | "-like" | "-notlike"
<JoinOperator> ::= "-and" | "-or" #-and都为真,则真,否则假;-or有一个为真,则真,否者为假
<NotOperator> ::= "-not" #取反:Get-ADUser -Filter '-not Emailaddress -like "[email protected]"'
<attr> ::= <PropertyName> | <LDAPDisplayName of the attribute> #属性,取其值跟value进行对比
<value>::= <compare this value with an <attr> by using the specified <FilterOperator>>#值,跟属性进行对比
解释:
<FilterOperator>:
"-eq" #等于
"-le" #小于等于
"-ge" # 大于等于
"-ne" #不等于
"-lt" #小于
"-gt" #大于
"-approx" #
"-bor" #
"-band" #
"-recursivematch" #
"-like" #相似
"-notlike" #不相似
多个条件查询:
Get-ADUser -Filter 'Emailaddress -like "[email protected]" -and name -like "张小明"'
关于更多的例子请查看如下链接:about_ActiveDirectory_Filter
重置密码:Set-ADAccountPassword
Set-ADAccountPassword -Identity michaelzhang -Reset -NewPassword (ConvertTo-SecureString -AsPlainText "PassWord123$%^" -Force)
推荐阅读
-
PowerShell命令之AD域控
-
powershell批量管理AD活动目录域用户
-
利用Powershell快速导出域控所有用户Hash
-
powershell批量修改AD域用户UPN后缀
-
Windows Server 2016-Powershell之客户端加域
-
Powershell小技巧之查询AD用户
-
PowerShell小技巧之使用New-Module命令动态创建对象
-
Powershell小技巧之非相同域或信任域也能远程
-
Powershell小技巧之使用WS-Man来调用PowerShell命令
-
powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介