第8章 创建和管理用户帐户
8.1 创建和管理用户帐户
8.1.1 创建本地用户帐户
管理本地用户帐户的主要工具是Computer Management。在Server Manager中通过Tools | Computer Management菜单可以找到它。
请以Administrator帐户登录Server01.bigfirm.com,然后打开Computer Management,并定位到\Local Users and Groups\Users。
还可以通过命令行创建用户,接下来运行下面的命令,在服务器上创建本地用户SRed:
net user SRed1 Skyisblue2013 /ADD
8.1.2 创建域用户帐户
(1)可以在域的根部创建另一个OU,通常根据域或者组织命名OU。在这种情况下,可以在bigfirm.com下创建一个称为Bigfirm的OU。
(2)然后在域中创建一个适合组织策略和管理层次结构的OU架构。我们拥有的是一个单站点的组织,所以执行如下操作:
a)为用户创建一个OU(Users)。
b) 为计算机创建另一个OU(Security Groups)。
c) 再为安全组创建另一个OU(Security Groups)。
这样允许为不同类型的对象使用粒度控制授予权限,并且区别地对待这些对象。接下来在bigfirm.com域中的OU\Bigfirm\Users中创建用户。
(3) 浏览到希望创建新用户的OU中。
(4) 在OU中右击,然后从弹出的菜单中选择New | User命令创建用户,这将启动New Object -User向导。
(5) 输入用户的名字和姓氏。
(6)接下来输入登录名,如SRed,
接下来解释一些术语,每个用户都拥有两种类型的名称,用户可以使用这两个名称访问网络上的资源。
用户登录名称 这或许是大家最熟悉的名称,如SRed
用户主体名称UPN 这是一个类似于电子邮件地址的用户名,例如[email protected]。UPN后缀默认继承域的名称。
用户登录名称是微软公司出于向后兼容而保留的,此处用户登录名称是SRed。
(7)单击Next按钮到New Object-User页面。
(8)结束向导创建用户。
8.1.4 设置基于域的用户帐户属性
下面比较本地用户和基于域的用户帐户之间的区别。
(1) 重新登录域控制器。
(2) 定位到一个用户。
(3) 然后选择这个用户对象。右击该用户对象并从弹出菜单中选择Properties选项。
(4) 禁用ADUC中的Advanced Features视图。
你会发现高级视图提供更多的功能。
- General选项卡
General选项卡为用户提供一些描述性信息。 - Address选项卡
该选项卡为正在讨论的用户定义一个通信地址。 - Account选项卡
可以查看在创建用户时定义的用户登录名、UPN和Windows 2000之前版本的用户登录名,这些控件可以用来修改用户名。 - Profile选项卡
profile path 该设置是用户配置文件所在的位置。
Logon script 该设置允许定义一个存储在域控制器上的脚本,用户每次登录时都将运行这个脚本,也可以在本地为本地用户帐户存储一个登录脚本。
Home folder 该设置允许为用户指定一个专用的网络驱动器,并且当用户登录时将网络驱动器映射为一个特殊的驱动器盘符 - Telephones选项卡
可以为用户帐户对象存储通信联系信息 - Organization选项卡
- COM+选项卡
COM+选项卡可以深入应用程序编程领域。 - Attribute Editor选项卡
在查看OU属性时已经见过这个选项卡,如果需要,就可以在这里查看或者直接编辑用户对象的属性。 - Published Certificates选项卡
证书可以提供基于加密的安全机制,用来证明身份。 - Member Of选项卡
Member Of选项卡允许控制用户帐户的组成员身份。 - Password Relication选项卡
Password Relication选项卡用来查看用户的密码被复制到哪台只读域控制器(RODC)。 - Object选项卡
- Security选项卡
允许控制哪些用户可以操作这个用户帐户对象,这就是所谓的委托。 - 同时编辑多个用户帐户
可以选择所有的用户帐户,右击并选择Properties命令。 - 在命令行上管理基于域的用户属性。
可以使用一个称为dsmod的命令。
8.2 组管理
8.2.1 本地组
- 创建组
- 通过命令行来创建组:
通过使用net localgroup
命令,在命令提示符下也可以完成相同的事情。下面的命令可以获取帮助信息。
net help localgroup
下面的命令用来创建组:
net localgroup Fileshare /add /comment:"Members assigned permission to the fileshare on this server"
- 向组中添加用户
下面再次使用net localgroup
命令:
net localgroup fileshare SRed /add
下面的命令快速地将BigFirm域中的Domain中的Domain Users组添加到新的本地组中:
net localgroup Fileshare "bigfirm\domain users" /add
- 删除用户
net localgroup fileshare SRed /delete
8.2.2 Active Directory组
Active Directory组有两种基本的类型:
- 通讯组 通讯组用来将许多对象编组在一起,从而集中寻址。
- 安全组 安全组也可以执行邮件分发功能,但是安全组的主要目的顾名思义是:安全。安全组可以用来为一个对象或一组对象(如一个组织单位、一个文件夹或者一个应用程序组件)分配权限,这就允许Active Directory不仅成为网络的单独身份验证机制,而且还是授权机制。最终用户可以使用一个单独的用户帐户在整个Active Directory林而不是一个域或者一台单独的计算机中获取安全资源的授权。
- 创建Active Directory组
前面在bigfirm.com域中创建了一个称为\Bigfirm\Security Groups的OU。
(1) 使用Active Directory Users and Groups浏览到这个OU。
(2) 右击这个OU,然后从弹出菜单中选择New | Group命令。
(3) 在弹出的对话框中输入Management作为组的名称。
(4)选择组范围为Domain Local,保持组类型为默认值Security。
(5)最后单击OK按钮创建这个组。 - 用命令行创建组
dsadd group /?
下面的命令在bigfirm.com域中的\Bigfirm\Security Group OU中创建一个称为Management的域本地组。
dsadd group "CN=Management, OU=Security Groups, OU=BigFirm, DC=bigfirm, DC=com" -scope l
默认情况下,该命令创建一个安全组。如果希望创建全局组,那么实际上可以省略-scope选项。通过运行下面的命令就可以创建一个全局通讯组。
dsadd group "CN=Management, OU=Security Groups, OU=Bigfirm, DC=bigfirm,DC=com" -secgrp no -scope g
8.5 用于Windows PowerShell的Active Directory模块
8.5.1 创建用户
首先创建一个用户比较合理,用来创建用户的PowerShell cmdlet是New-ADuser
:
PS C:\Users\Administrator\> New-ADUser "Philipp Witschi"
如果需要为用户指定许多设置,可以运行下面的命令:
new-ADUser "Philipp Witschi" SamAccountName "PWitschi" GivenName "Philipp" -Surname "Witschi" -DisplayName "Philipp Witschi" -Path 'OU=Users, OU=BigFirm, DC=bigfirm, DC=com' -UserPrincipalName "[email protected]"
下面介绍上述命令中的标识:
-SamAccountName 这个标识是用户对象属性中的用户登录名称(Windows 2000以前版本)属性。
-GivenName 这个标识指用户的名字。
-DisplayName 这个标识是用户对象的显示名称
-Path 这个标识是希望创建的对象所在OU的可分辨名称。
-UserPrincipalName UPN是用户对象中的用户登录名称属性,也就是以电子邮件属性表示的名称。
8.5.2 设置密码
假设准备创建10个用户对象,而且希望为他们设置相同的密码并且启用这些用户,另外还希望用户在第一次登录时更改他们的密码,那么方法如下:
$pw = read-host "Please Enter The Password" -AsSecureString
Please Enter The Password:*********
new-ADUser "Philipp Witschi" -SamAccountName "PWitschi" -GivenName "Philipp" -Surname "Witschi" -DisplayName "Philipp Witschi" -Path "OU=Users, OU=BigFirm, DC=bigfirm, DC=com" -UserPrincipalName "[email protected]" -AccountPassword $pw -Enabled 1 -ChangePasswordAtLogon 1
上述命令解释:
AccountPassword
使用前面命令中的$pw密码
Enable
这个标识可以设置为1(启用用户对象)或者0(禁用用户对象)
ChangePasswordAtLogon
这个标识可以设置为1(强制密码更改)或者0(不强制密码更改)。
运行两个命令似乎有些浪费,是不是?只不过创建了一个用户。但是通过这种方式,可以为其他9个希望创建的用户重复第二个命令,每个用户拥有相同的密码。
如果只希望创建一个用户,就可以只用一个命令完成。这种方法充分利用了PowerShell的强大功能,并且使用了嵌套的Read-Host
cmdlet:
new-ADUser "Philipp Witschi" -SamAccountName "PWitschi" -GivenName "Philipp" -Surname "Witschi" -DisplayName "Philipp Witschi" -Path "OU=Users, OU=BigFirm, DC=bigfirm, DC=com" -UserPrincipalName "[email protected]" -AccountPassword (read-host "Please Enter The Password" -AsSecureString) -Enabled 1 -ChangePasswordAtLogon 1
8.5.3 同时创建多个用户
该任务可以使用一个功能强大的单行PowerShell命令来完成,而且不需要很大的代价。所需的准备就是在Excel或者其他电子表格编辑工具中创建一个CSV文件。CSV文件是一个文本文件,包含一个用来描述值的标题行,标题行下面就是用户行,每个用户占用一行,每个用户行都包含有描述用户的值,下面是一个这样的CSV文件,可以用来创建3个用户,这个文件称为users.csv:
Name, SamAccountName, GivenName, Surname, DisplayName, Path, UserPrincipalName, AccountPassword
Rachel Kelly, Rkelly, Rachel, Kelly, Rachel Kelly, "OU=Users,OU=BigFirm, DC=bigfirm,DC=COM", [email protected], NewPassword
Ulrika Gerhardt, UGerhardt, Ulrika, Gerhardt, Ulrika Gerhardt, "OU=Users,OU=Bigfirm,DC=bigfirm,DC=com", [email protected], NewPassw0rd
Tomasz Kozlowski, TKozlowski, Tomasz, Kozlowski, Tomaz Kozlowski, "OU=Users,OU=BigFirm,DC=bigfirm,DC=com", [email protected], NewPassw0rd
接下来需要运行一个命令,该命令读取CSV文件(作为:c:\users.csv保存)的每一行,然后该命令使用从这个文件中读取的值执行New-ADUser
cmdlet,下面这个命令:
Import-CSV | foreach {New-ADUser -Name $_.Name -SamAccountName $_.SamAccountName -GivenName $_.GivenName -Surname $_.Surname -DisplayName $_.DisplayName -Path $_.Path -UserPrincipalName $_.UserPrinciplaName -AccountPassword (CovertTo-SecureString -AsPlainText $_.AccountPassword -Force) -Enabled $true -ChangePasswordAtLogon 1}
8.5.4 解除用户帐户锁定
PowerShell还可以用来完成更多普通的工作,如果希望解除用户帐户的锁定,那么可以运行下面的命令:
Unlock-ADAccount -identity SRed
标识 -identity 获取要解除锁定的用户对象的名称,在本示例中使用的是友好的用户登录名称。如果希望使用DN来标识用户对象,那么可以运行下面的命令:
Unlock-ADAccount -identity "CN=Steve Red, OU=Users, OU=Bigfirm, DC=bigfirm, DC=com"
重设用户的密码可以使用下面的命令:
Set-ADAccountPassword -identity SRed -reset -newpassword (read-host "Please Enter The New Password" -AsSecureString)
Get-ADUser
cmdlet用来检索用户对象的属性:
Get-ADUser SRed
Get_ADUser
cmdlet默认只检索小部分可用的属性,如果希查看用户对象的所有可用属性,就可以运行|Get-ADUser
命令并使用通配符*请求所有的属性:
Get-ADUser SRed -properties * | more
通过指定一些搜索标准可以一次返回许多用户的属性:
Get-ADUser -Filter 'Name -like "*"' -SearchBase "OU=Users, OU=BigFirm,DC=bigfirm, DC=com"
该命令中有两个标识:
-Filter 这里指定名称类似于通配符*的任意对象,换句话说就是所有的用户对象。
-SearchBase: 通过指定域中的\BigFirm\Users OU进一步限定搜索范围。
如果希望修改用户对象的属性,就需要运行Set-ADUser
cmdlet:
Set-ADUser SCorso -Description "IT Manager"
8.5.5 启用帐户
前面说过可以希望创建一个用户对象,但是仅当用户准备使用这个对象时才启用它。下面的命令解释如何为Philipp Witschi启用一个用户对象:
Enable-ADAccount -Identity PWitschi
8.5.6 禁用帐户与组管理
Disable-ADAccount -Identity PWitschi
最终,过了一段时间,如果已经不再使用帐户就可以删除用户帐户:
Remove-ADUser -Identity PWitschi -confirm
接下来讨论组管理。首先使用New-ADGroup cmdlet创建一个组。
New-ADGroup -Name "IT Administrators" -SamAccountName "IT Administrators" -GroupCategory -Security -GroupScope DomainLocal -DisplayName -DisplayName "IT Administrators" -Path "OU=Security Groups, OU=BigFirm, DC=bigfirm,DC=com" -Description "Members of this group are in IT"
上述命令将使用下面的标识在\BigFirm\Security Group OU中创建一个称为IT Administrators的域本地安全组:
-Name 组的名称。
-SamAccountName 与Windows 2000以前版本组对象属性关联的名称。
-GroupCategory 设置为Security(或1),或者设置为Distribution(或0)。
-GroupScope 设置为DomainLocal(或0)、Global(或1)或者Universal(或2)。
-DisplayName 组的显示名称。
-Path 组所在的OU的可分辨名称。
-Description 用来填充对象的描述字段,用于未来参考。
创建好组后,就可以向组中添加对象,使用Add-ADGroupMember cmdlet。Add-ADGroupMember
cmdlet的使用方式有许多种,下面从最简单的方式开始:
Add-ADGroupMember "IT Administrators" -Member SRed
还可以使用下面的方法:
Add-ADGroupMember "IT Administrators" -Member Scorso,MZehner
有时候希望向组中添加大量的用户。如果是这种情况,就可以使用由Get-ADuser cmdlet生成的搜索结果来添加用户:
Add-ADGroupMember "IT Administrators" -Member (Get-ADUser -Filter 'Name -like "*" ' -SearchBase "OU=Users,OU=BigFirm,DC=bigfirm,DC=com")
前面介绍过,还可以向组中添加组,从而创建嵌套的组:
Add-ADGroupMember "IT Administrators" "Helpdesk"
上面的命令把Helpdesk组添加到IT Administrators组中。
当拥有一个组时,可能希望查看这个组包含的成员,这时可以使用Get-ADGroupMember cmdlet列举IT Administrators组的所有成员:
Get-ADGroupMember "IT Administrators"
该命令返回所查询组的所有成员,但是不包含嵌套组的成员。
但是,如果组中包含其他组作为成员时,那么可能需要所有成员的完整的递归列表:
Get-ADGroupMember "IT Administrators" -recursive | FT DistinguishedName
接下来操作的是从组中删除成员。使用的是Remove-ADGroupMember
cmdlet:
Remove-ADGroupMember "IT Administrators" -Member SRed
通过使用逗号可以为多个用户运行这个命令:
Remove-ADGroupMember "IT Administrators" -Member SCorso,SRed
上述命令使用逗号将用户SCorso和SRedwv分隔开来,通过这种方式可以在命令中添加许多用户,甚至组。
有时候可能希望使用搜索来删除许多用户或组。在下面的示例中使用Get-ADUser
cmdlet搜索\BigFirm\Users OU中的所有用户,然后将这些用户从IT Administrators组中删除。
Remove-ADGroupMember "IT Administrators" -Member (Get-ADUser -Filter 'Name -like "*"' -SearchBase "OU=Users,OU=BigFirm,DC=bigfirm,DC=com")
8.5.7 删除组
Remove-ADGroup "IT Administrators"
上述命令用来删除IT Administrators组。组中有没有成员都无关紧要,组均会被删除。