第8章 创建和管理用户帐户

发布时间 2023-07-19 12:05:21作者: Evan-whc

第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 这是一个类似于电子邮件地址的用户名,例如SRed@bigfirm.com。UPN后缀默认继承域的名称。
用户登录名称是微软公司出于向后兼容而保留的,此处用户登录名称是SRed。
(7)单击Next按钮到New Object-User页面。
(8)结束向导创建用户。

8.1.4 设置基于域的用户帐户属性

下面比较本地用户和基于域的用户帐户之间的区别。
(1) 重新登录域控制器。
(2) 定位到一个用户。
(3) 然后选择这个用户对象。右击该用户对象并从弹出菜单中选择Properties选项。
(4) 禁用ADUC中的Advanced Features视图。
你会发现高级视图提供更多的功能。

  1. General选项卡
    General选项卡为用户提供一些描述性信息。
  2. Address选项卡
    该选项卡为正在讨论的用户定义一个通信地址。
  3. Account选项卡
    可以查看在创建用户时定义的用户登录名、UPN和Windows 2000之前版本的用户登录名,这些控件可以用来修改用户名。
  4. Profile选项卡
    profile path 该设置是用户配置文件所在的位置。
    Logon script 该设置允许定义一个存储在域控制器上的脚本,用户每次登录时都将运行这个脚本,也可以在本地为本地用户帐户存储一个登录脚本。
    Home folder 该设置允许为用户指定一个专用的网络驱动器,并且当用户登录时将网络驱动器映射为一个特殊的驱动器盘符
  5. Telephones选项卡
    可以为用户帐户对象存储通信联系信息
  6. Organization选项卡
  7. COM+选项卡
    COM+选项卡可以深入应用程序编程领域。
  8. Attribute Editor选项卡
    在查看OU属性时已经见过这个选项卡,如果需要,就可以在这里查看或者直接编辑用户对象的属性。
  9. Published Certificates选项卡
    证书可以提供基于加密的安全机制,用来证明身份。
  10. Member Of选项卡
    Member Of选项卡允许控制用户帐户的组成员身份。
  11. Password Relication选项卡
    Password Relication选项卡用来查看用户的密码被复制到哪台只读域控制器(RODC)。
  12. Object选项卡
  13. Security选项卡
    允许控制哪些用户可以操作这个用户帐户对象,这就是所谓的委托。
  14. 同时编辑多个用户帐户
    可以选择所有的用户帐户,右击并选择Properties命令。
  15. 在命令行上管理基于域的用户属性。
    可以使用一个称为dsmod的命令。

8.2 组管理

8.2.1 本地组

  1. 创建组
  2. 通过命令行来创建组:
    通过使用net localgroup命令,在命令提示符下也可以完成相同的事情。下面的命令可以获取帮助信息。
    net help localgroup
    下面的命令用来创建组:
    net localgroup Fileshare /add /comment:"Members assigned permission to the fileshare on this server"
  3. 向组中添加用户
    下面再次使用net localgroup命令:
    net localgroup fileshare SRed /add
    下面的命令快速地将BigFirm域中的Domain中的Domain Users组添加到新的本地组中:
    net localgroup Fileshare "bigfirm\domain users" /add
  4. 删除用户
    net localgroup fileshare SRed /delete

8.2.2 Active Directory组

Active Directory组有两种基本的类型:

  • 通讯组 通讯组用来将许多对象编组在一起,从而集中寻址。
  • 安全组 安全组也可以执行邮件分发功能,但是安全组的主要目的顾名思义是:安全。安全组可以用来为一个对象或一组对象(如一个组织单位、一个文件夹或者一个应用程序组件)分配权限,这就允许Active Directory不仅成为网络的单独身份验证机制,而且还是授权机制。最终用户可以使用一个单独的用户帐户在整个Active Directory林而不是一个域或者一台单独的计算机中获取安全资源的授权。
  1. 创建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按钮创建这个组。
  2. 用命令行创建组
    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 "PWitschi@bigfirm.com"
  下面介绍上述命令中的标识:
-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 "PWitschi@bigfirm.com" -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 "PWitschi@bigfirm.com" -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", RKelly@bigfirm.com, NewPassword
Ulrika Gerhardt, UGerhardt, Ulrika, Gerhardt, Ulrika Gerhardt, "OU=Users,OU=Bigfirm,DC=bigfirm,DC=com", UGerhardt@bigfirm.com, NewPassw0rd
Tomasz Kozlowski, TKozlowski, Tomasz, Kozlowski, Tomaz Kozlowski, "OU=Users,OU=BigFirm,DC=bigfirm,DC=com", TKozlowski@bigfirm.com, 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组。组中有没有成员都无关紧要,组均会被删除。