Use PowerShell deployment Active Directory(使用PS部署AD)
- Use PowerShell deployment Active Directory(使用PS部署AD)
- 2 简介
- 3 描述
- 4 Active Directory 功能
- 5 术语
- 6 Example Active Directory (AD) 活动目录配置
- 6.1 Install the Active Directory and DNS server
- 6.2 Deploying a New Forest
- 6.3 Create administrative users and groups for SQL Server in Active Directory
- 6.4 Create administrative users and groups for SQL Server in Active Directory
- 6.5 Create administrative users and groups for iSCSI Server in Active Directory
- 6.6 Configuring a drive for backing up Active Directory (配置用于备份活动目录的驱动器)
- 6.7 Back up Active Directory configuration and system status
2 简介
- Active Directory 是一种 Windows “目录服务” 由 Microsoft (微软)开发。在 Windows Server 2000 操作系统平台中加入的功能组件。为 Windows 平台提供统一管理,所有居于 Windows 平台的可用性服务,都严重依赖 Active Directory
- Active Directory 提供了跨平台服务,除了Windows 平台外,还提供 Linux、Unix 平台和 Mac 平台的服务。
- Azure 平台更是严重依赖 Active Directory 的服务
3 描述
- Active Directory (活动目录) 是 Microsoft (微软) Windows Server 家族产品中的核心功能组件。它提供了包括但不限于 Domain(域)、Single Sign On(单点登入)、uniform identity authentication(统一身份验证)、Organizational Unit(组织单位)、Computer(计算机)、User Group(用户组)和 User(用户)、资源、以及联系人等等的,管理。
运行 Active Directory 服务(AD DS)的服务器称为 Domain controller(域控制器) - Active Directory 同时还提供 Lightweight Directory Access Protocol 轻行目录访问协议(LDAP)
4 Active Directory 功能
-
Domain Services
Active Directory 域服务(AD DS)是 Windows Domain 网络的基础核心。它存储所有域成员的信息,包括 Domain、Single Sign On、uniform identity authentication、Organizational Unit、Computer、User Group和 User、资源、以及联系人等等的,管理。示例包括组策略,加密文件系统,BitLocker,域名服务,远程桌面服务,Exchange Server和SharePoint Server。 -
Lightweight Directory Services
Lightweight Directory Services 轻量目录服务(AD LDS),其前身为 Active Directory 应用程序模式(ADAM)。AD LDS 在 Windows Server 上作为服务运行。“AD LDS与AD DS” 共享代码库,并提供相同的功能,包括相同的API,但不需要创建域,或域控制器。
AD LDS 提供了目录数据的存储和目录服务与LDAP 目录服务接口。但是,与AD DS不同,多个 “AD LDS 实例可以在同一服务器上运行”。 -
Certificate Services
Certificate Services 证书服务(AD CS),它可以为组织建立 “证书颁发机构”。通过RPC或HTTP传输协议接收新数字证书的请求,根据自定义或指定站点的策略检查,为颁发的证书设置可选属性,并颁发证书。
证书服务允许管理员将证书添加到证书吊销列表(CRL),并定期发布签名的CRL。 -
Federation Services
Federation Services 联合身份验证服务(AD FS),它是一种单点登入服务。
基于 AD FS 的身份验证,用户可以使用基于Web的服务(例如,互联网论坛,博客,在线购物,网络邮件)或仅使用存储在中心位置的一组凭证的网络资源,而不是必须被授予每项服务的一组专用凭证,“AD FS 做为 AD DS的扩展功能。
AD DS 使用户能够使用一组凭据进行身份验证,并使用属于同一网络的设备进行身份验证。
AD FS 使他们能够在不同的网络中使用相同的凭证集。 -
Rights Management Services
Rights Management Services 权限管理服务(AD RMS),在 Windows Server 2008 之前称为权限管理服务或 RMS。
AD RMS 是 Windows Server 附带的“文件权限管理的软件”。它使用加密和选择性功能拒绝的形式来限制对文档的访问,如公司电子邮件、Microsoft Word文档和web页面,以及授权用户可以对这些文档执行的操作。
5 术语
术语 | 说明 | |
---|---|---|
Trusting | (信任) | 要允许一个域中的用户访问另一个域中的资源,Active Directory 使用 trust。在创建域时,将自动创建林中的信任。forest 设置信任的默认边界,并且对于 forest 中的所有域,传递信任是自动的。 |
One-way trust | (单向信任) | Domain_1 允许访问 Domain_2 域上的用户,但 Domain_2 域不允许访问 Domain_1 域上的用户。 |
Two-way trust | (双向信任) | 允许 域 与 域 之间相互访问。 |
Trusted domain | (可信域名) | 受信任的域; 其用户可以访问信任域。 |
Transitive trust | (传递信任) | 可以将超出两个域的信任扩展到林中的其他受信任域。 |
Intransitive trust | (不可传递的信任) | 单向信任,不超出两个域。 |
Explicit trust | (明确信任) | 管理员创建的信任。它不是传递性的,只是一种方式。 |
Cross-link trust | (交叉链接信任) | 当两个域之间不存在(子/父)关系时,不同树中或同一树中的域之间的显式信任。 |
Shortcut | (捷径信任) | 连接不同树中的两个域,传递,一个或两个。 |
Forest trust | (林级别信任) | 适用于整个林。传递性,单向或双向。 |
Realm | (领域) | 可以是传递性的或非传递性的,单向或双向。 |
External | (外部) | 连接到其他林或非AD域。不可传递,单向或双向 |
PAM trust | (PAM信任) | Microsoft Identity Manager从(可能是低级别)生产林到(Windows Server 2016功能级别)“堡垒”林使用的单向信任,它发布有时间限制的组成员身份。 |
6 Example Active Directory (AD) 活动目录配置
6.1 Install the Active Directory and DNS server
6.1.1
Configuring the basic setting of the Active Directory server (配置活动目录服务器的基本设置)
1 2 3 4 5 |
#Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Rename-NetAdapter -NewName "LAN 01" # 2. 重命名本地计算机名称,并指定重启 Rename-Computer -NewName "DC01" -Restart |
6.1.2
Install the Active Directory and DNS server and Management Module
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# 启用 Windows 更新服务 Get-Service -Name "wuauserv", "Windows Update", "TrustedInstaller", "msiserver" | Start-Service # 使用 Displayname -like "*.3.5*" 语法来模糊查询包含 .NET Framework 3.5 组件的名称,然后通过该名称来安装 Get-WindowsFeature | Where-Object displayname -like "*3.5*" | ft -AutoSize # 离线安装 .Net 3.5 Install-WindowsFeature -Name "Net-Framework-Core" -Source D:\sources\sxs # 安装 Windiws 轻型目录服务,和 活动目录服务,以及 DSN 服务 -IncludeManagementTools 的意思就是包含管理工具 Get-WindowsFeature -Name "ADLDS", "AD-Domain-Services", "DNS", "TelnetClient", "Windows-Server-Backup" | Install-WindowsFeature #-IncludeManagementTool # 或者使用 WindowsFeature 来定制暗转工具,这里使用定制安装 # 安装 Windiws 轻型、活动目录、DSN、组策略管理 等相关程序的 管理工具 Get-WindowsFeature -Name "RSAT-AD-Tools", "RSAT-DNS-Server", "Remote-Assistance", "GPMC", "Telnet-Client" | Install-WindowsFeature # 安装完成,验证安装的组件是否安装好 Get-WindowsFeature | Where-Object Installed |
6.2 Deploying a New Forest
6.2.1
Deploying a New Forest with Windows PowerShell 使用 PowerShell 部署一个新林级别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 定义 ############################################################################################################################# $Domain = "WEM" # 定义域名的名称 $TLDs = ".local" # 定义顶级域名 top-level domains $DomainControllerPassword = "Admin@123" # 定义活动目录控制器的密码 # -DomainName 域名的名称 # -DomainNetbiosName 域名的 NetBIOS 名称 # -InstallDns 安装 DNS # -Create Dns Delegation 创建 DNS 委派 # -NoRebootOnCompletion 安装完成不用重启计算机 # -ForestMode 林级别 # -DomainMode 域级别 # -SafeModeAdministratorPassword 设置 域控 的管理密码 # -DatabasePath AD 的数据存储路径 # -LogPath AD 的 日志存放路径 # -SysvolPath 存放路径 ############################################################################################################################## Install-ADDSForest -DomainName $Domain$TLDs -DomainNetbiosName $Domain ` -InstallDns:$true -CreateDnsDelegation:$false -Force:$true -NoRebootOnCompletion:$false ` -ForestMode Win2012R2 -DomainMode Win2012R2 ` -SafeModeAdministratorPassword (convertto-securestring "$DomainControllerPassword" -asplaintext -force) ` -DatabasePath "C:\Windows\NTDS" -LogPath "C:\Windows\NTDS" -SysvolPath "C:\Windows\SYSVOL" |
6.2.2
Add Active Directory Organizational Unit 在 Active Directory 上新建组织单位。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# 定义 ############################################################################################################################# $Domain = Get-WmiObject -Class "Win32_NTDomain" | ForEach-Object {$_.DomainName} # 定义域名的名称 $TLDs = Get-WmiObject -Class "Win32_NTDomain" | ForEach-Object {($_.DnsForestName -split "[.]")[-1]} # 定义顶级域名 $Province = "Sichuan" # 定义省份 $City = "ChnegDu" # 定义城市 # ############################################################################################################################# # 在DN DC=SQL,DC=$TLDs 中新建 $Domain 的组织 New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name $Domain ` -Path "DC=$Domain,DC=$TLDs" # 在DN OU=SQL,DC=SQL,DC=$TLDs 中新建 $Domain 省份 的组织 New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name $Province ` -Path "OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 城市 的组织 New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name $City ` -Path "OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 公司部门的 组织 New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name $Domain ` -Path "OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 计算组 OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "Computer Group" ` -Path "OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 用户组 OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "User Group" ` -Path "OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=Computer Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 IT OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "Information Technology" ` -Path "OU=Computer Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=Computer Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 Computer OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "Computer" ` -Path "OU=Computer Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=User Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 IT OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "Information Technology" ` -Path "OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=User Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 Users OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "Users" ` -Path "OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=IT,OU=Computer Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 SQL Server OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "SQL Server" ` -Path "OU=Information Technology,OU=Computer Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=IT,OU=Computer Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 iSCSI Server OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "iSCSI Server" ` -Path "OU=Information Technology,OU=Computer Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=IT,OU=User Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 SQL Server OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "SQL Server" ` -Path "OU=Information Technology,OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在DN OU=IT,OU=User Group,OU=SQL,OU=ChengDu,OU=SiChuan,OU=SQL,DC=SQL,DC=$TLDs 中新建 iSCSI Server OU New-ADOrganizationalUnit -State $Province -City $City -Country CN -Name "iSCSI Server" ` -Path "OU=Information Technology,OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 真个新建 OU 的组织架构如下: # WEM # └─Sichuan # └─ChengDu # └─WEM # ├─Computer Group # │ ├─Computer # │ └─Information Technology # │ └─SQL Server # └─User Group # ├─Information Technology # │ └─SQL Server # └─Users |
6.3 Create administrative users and groups for SQL Server in Active Directory
6.3.1
Create administrative users and groups for SQL Server in Active Directory(为活动目录创建一个新的管理员用户)
1 2 3 4 5 6 7 8 |
New-ADUser -Name "Admin" -SamAccountName "Admin" -DisplayName 'Active Directory Admin' ` -Surname $Domain -GivenName "AD Admin" -UserPrincipalName "Admin@$Domain$TLDs" ` -AccountPassword (convertto-securestring "EM.Pro@outlook.com" -asplaintext -force) -CannotChangePassword $false -ChangePasswordAtLogon $false -PasswordNeverExpires $true ` -Country CN -State $Province -City $City -Company $Domain -Department IT -Office IT -Organization $Domain -Initials $Domain -Enabled $true Add-ADPrincipalGroupMembership -Identity "Admin" -MemberOf "Account Operators", "Schema Admins", "Enterprise Admins", "Group Policy Creator Owners", "Domain Admins", "DnsAdmins", "Administrators" |
6.4 Create administrative users and groups for SQL Server in Active Directory
6.4.1
Add a new user group for SQL Server in the Active directory (在 Active Directory 中为 SQL Server 新建用户组)
1 2 3 4 5 6 7 8 9 10 |
# 定义一个 -Path 的变量值 $SQLPath = "OU=SQL Server,OU=Information Technology,OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在 $SQLPath 路径下新建 SQL Admins 用户组,并把这个组属性设为: 全局通用模式、显示名称 SQL Administrators New-ADGroup -Name "SQL Admins" -SamAccountName "SQL Admins" -GroupScope Global -GroupCategory Security -DisplayName "SQL Administrators" -Path $SQLPath # 将指定的 SQLAdmins 用户组,附加到 Active Directory 的这些组中 Add-ADPrincipalGroupMembership -Identity "SQL Admins" -MemberOf "Account Operators", "Schema Admins"#, "Enterprise Admins", "Group Policy Creator Owners", "Domain Admins" |
6.4.2
Add a new user group for Cluster in the Active directory (在 Active Directory 中为 Cluster 新建用户组)
1 2 3 4 5 6 7 |
# 定义一个 -Path 的变量值 $SQLPath = "OU=SQL Server,OU=Information Technology,OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在 $SQLPath 路径下新建 Cluster Member 用户组,并把这个组属性设为: 全局通用模式、显示名称 Cluster Member Managementw New-ADGroup -Name "Cluster Member" -SamAccountName "Cluster Member" -GroupScope Global -GroupCategory Security -DisplayName "Cluster Member Management" -Path $SQLPath |
6.4.3
Add a new user for SQL Server in the Active directory (在 Active Directory 中为 SQL Server 新建用户)
1 2 3 4 5 6 7 8 9 10 11 12 |
New-ADUser -Name "SQLAdmin" -SamAccountName "SQLAdmin" -DisplayName 'SQL Administrator' ` -Surname $Domain -GivenName "SQL Admin" -UserPrincipalName "SQLAdmin@$Domain$TLDs" ` -AccountPassword (convertto-securestring "Admin@123" -asplaintext -force) -CannotChangePassword $false -ChangePasswordAtLogon $false -PasswordNeverExpires $true ` -Country CN -State $Province -City $City -Company $Domain -Department IT -Office IT -Organization $Domain -Initials $Domain ` -Path "$SQLPath" -Enabled $true Add-ADGroupMember -Identity "SQL Admins" -Members "SQLAdmin" # 关闭防火墙网络 Domain,Private,Public 三个网络 Set-NetFirewallProfile -Name Domain,Private,Public -Enabled False |
6.5 Create administrative users and groups for iSCSI Server in Active Directory
6.5.1
Add a new user group for iSCSI Server in the Active directory (在 Active Directory 中为 iSCSI Server 新建用户组)
1 2 3 4 5 6 7 8 9 10 |
# 定义一个 -Path 的变量值 $iSCSIPath = "OU=iSCSI Server,OU=Information Technology,OU=User Group,OU=$Domain,OU=$City,OU=$Province,OU=$Domain,DC=$Domain,DC=$TLDs" # 在 $iSCSIPath 路径下新建 iSCSI Admins 用户组,并把这个组属性设为: 全局通用模式、显示名称 iSCSI Administrators New-ADGroup -Name "iSCSI Admins" -SamAccountName "iSCSI Admins" -GroupScope Global -GroupCategory Security -DisplayName "iSCSI Administrators" -Path $iSCSIPath # 将指定的 iSCSIAdmins 用户组,附加到 Active Directory 的这些组中 Add-ADPrincipalGroupMembership -Identity "iSCSI Admins" -MemberOf "Account Operators", "Schema Admins"#, "Enterprise Admins", "Group Policy Creator Owners", "Domain Admins" |
6.5.2
Add a new user for iSCSI Server in the Active directory (在 Active Directory 中为 iSCSI Server 新建用户)
1 2 3 4 5 6 7 8 9 |
New-ADUser -Name "iSCSIAdmin" -SamAccountName "iSCSIAdmin" -DisplayName 'iSCSI Administrator' ` -Surname $Domain -GivenName "iSCSI Admin" -UserPrincipalName "iSCSIAdmin@$Domain$TLDs" ` -AccountPassword (convertto-securestring "Admin@123" -asplaintext -force) -CannotChangePassword $false -ChangePasswordAtLogon $false -PasswordNeverExpires $true ` -Country CN -State $Province -City $City -Company $Domain -Department IT -Office IT -Organization $Domain -Initials $Domain ` -Path "$iSCSIPath" -Enabled $true Add-ADGroupMember -Identity "iSCSI Admins" -Members "iSCSIAdmin" |
6.6 Configuring a drive for backing up Active Directory (配置用于备份活动目录的驱动器)
6.6.1
Resize the size of the specified partition and underlying file system. (调整指定分区和基础文件系统的大小)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ConfirmPreference='None' # 该更改 PS 的默认确认级别,改变为 None 以便关闭确认窗口 # 定义:获取 Win32 卷标,过滤卷标为启动类型的卷标,过了对象信息为 Name 的字符串,并将字符串分割 $DriveLetter = Get-WmiObject Win32_Volume | Where-Object {$_.BootVolume -match "True" } | ForEach-Object {($_.Name -split "[:]")[-2]} $Getsize = Get-Volume -DriveLetter "$DriveLetter" | ForEach-Object {$_.Size } # 定义:获取指定盘符 “C” 的剩余空间大小,以 Bytes 为单位 $SIZE = $Getsize * 0.70 # 定义:获取指定盘符 “C” 的剩余空间大小后,在乘以 70% Resize-Partition -DriveLetter "$DriveLetter" -Size $SIZE # 重新调整指定盘符 “C” 的空间大小 # 定义:获取系统盘符 “C” 的磁盘编号 $DiskNum = Get-Partition -DriveLetter $DriveLetter | ForEach-Object {$_.DiskNumber } # 新建分区,磁盘编号为定义的系统盘符 “C” 的磁盘编号,并使用最大化分区,指定磁盘盘符为B,格式化文件系统为 NTFS,新建磁盘卷标为 Backup Disk New-Partition -DiskNumber "$DiskNum" -UseMaximumSize -DriveLetter "B" | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Backup Disk" |
6.7 Back up Active Directory configuration and system status
6.7.1
Install the Windows server backup service (安装 WindowsServerBackup 服务)
1 2 3 |
Enable-WindowsOptionalFeature -Online -FeatureName "WindowsServerBackup" |
6.7.2
备份系统状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 1. 定义:获取 Win32_Volume 对象,卷标名称包含 Backup 的卷标,对对象 DriveLetter 执行操作 $WBDevicePath = Get-WmiObject Win32_Volume | Where-Object {$_.Label -like "*Backup*" } | ForEach-Object {$_.DriveLetter } # 2. 创建一个备份策略对象 $Policy = New-WBPolicy # 3. 添加 备份系统状态 到 备份策略中 Add-WBSystemState -Policy $Policy # 4. 定义:新建备份存储位置,位置为带有 Backup 卷标名称的磁盘 $BackupLocation = New-WBBackupTarget -VolumePath $WBDevicePath # 5. 添加备份目标,-测率为新建的策略,-目标为定义的存储位置 Add-WBBackupTarget -Policy $Policy -Target $BackupLocation # 6. Start backup using policy Start-WBBackup -Policy $Policy |