欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PowerShell命令之AD域控

程序员文章站 2023-12-30 15:33:28
...

环境简介

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

上一篇:

下一篇: