作者:Justin Turner,Windows 组的高级支持升级工程师
Note
本内容由 Microsoft 客户支持工程师编写,适用于正在查找比 TechNet 主题通常提供的内容更深入的有关 Windows Server 2012 R2 中的功能和解决方案的技术说明的有经验管理员和系统架构师。 但是,它未经过相同的编辑审批,因此某些语言可能看起来不如通常在 TechNet 上找到的内容那么精练。
Overview
Windows Server 2012 中引入了 ADCSAdministration Windows PowerShell 模块。 在 Windows Server 2012 R2 中向此模块添加了两个新的 cmdlet,以支持 CA 的备份和还原。
Backup-CARoleService
Restore-CARoleService
Backup-CARoleService
ADCSAdministration Cmdlet:Backup-CARoleService
| 参数 - 加粗的参数是必需的 | Description | 
|---|---|
| -Path | - 字符串,用于保存备份的位置 - 这是唯一未命名的参数 - 位置参数 Example: Backup-CARoleService.-Path c:\adcsbackup1 Backup-CARoleService c:\adcsbackup2  | 
| -KeyOnly | - 备份不包含数据库的 CA 证书 Example: Backup-CARoleService c:\adcsbackup3 -KeyOnly  | 
| -Password | - 指定用于保护 CA 证书和私钥的密码 - 必须是安全字符串 - 对 -DatabaseOnly 参数无效 Example: Backup-CARoleService c:\adcsbackup4 -Password(Read-Host -prompt“密码:”-AsSecureString) Backup-CARoleService c:\adcsbackup5 -Password(ConvertTo-SecureString“Pa55w0rd!” -AsPlainText -Force)  | 
| -DatabaseOnly | - 备份没有 CA 证书的数据库 Backup-CARoleService c:\adcsbackup6 -DatabaseOnly  | 
| -Force | 1. 允许你覆盖先前存在于 -Path 参数中指定的位置的备份 Backup-CARoleService c:\\adcsbackup1 -Force  | 
| -Incremental | - 执行增量备份 Backup-CARoleService c:\adcsbackup7 -Incremental  | 
| -KeepLog | 1. 指示命令保留日志文件。 如果未指定开关,默认情况下将截断日志文件,增量方案除外 Backup-CARoleService c:\adcsbackup7 -KeepLog  | 
-Password <安全字符串>
如果使用 -Password 参数,则提供的密码必须是安全字符串。 使用 Read-Host cmdlet 启动安全密码输入的交互式提示,或使用 ConvertTo-SecureString cmdlet 指定内联密码。
查看以下示例
使用 Read-Host 为 Password 参数指定安全字符串
Backup-CARoleService c:\adcsbackup4 -Password (Read-Host -prompt "Password:" -AsSecureString)
使用 ConvertTo-SecureString 为 Password 参数指定安全字符串
Backup-CARoleService c:\adcsbackup5 -Password (ConvertTo-SecureString "Pa55w0rd!" -AsPlainText -Force)
Restore-CARoleService
ADCSAdministration Cmdlet:Restore-CARoleService
| 参数 - 加粗的参数是必需的 | Description | 
|---|---|
| -Path | - 字符串,从中还原备份的位置 - 这是唯一未命名的参数 - 位置参数 Example: Restore-CARoleService.-Path c:\adcsbackup1 -Force Restore-CARoleService c:\adcsbackup2 -Force  | 
| -KeyOnly | - 还原不包含数据库的 CA 证书 - 如果备份已使用 -KeyOnly 选项进行,则必须指定此项 Example: Restore-CARoleService c:\adcsbackup3 -KeyOnly -Force  | 
| -Password | - 指定 CA 证书和私钥的密码 - 必须是安全字符串 Example: Restore-CARoleService c:\adcsbackup4 -Password(读取主机 -prompt“密码:”-AsSecureString) -Force Restore-CARoleService c:\adcsbackup5 -Password (ConvertTo-SecureString “Pa55w0rd!” -AsPlainText -Force) -Force  | 
| -DatabaseOnly | - 还原没有 CA 证书的数据库 Restore-CARoleService c:\adcsbackup6 -DatabaseOnly  | 
| -Force | - 允许覆盖预先存在的密钥 - 是一个可选参数,但在就地还原时,你可能需要它 Restore-CARoleService c:\adcsbackup1 -Force  | 
Issues
如果在使用带 -Password 参数的 Backup-CARoleService 时 ConvertTo-SecureString 函数失败,则会进行非密码保护备份。
              
              
            
常见错误
| Action | Error | Comment | 
|---|---|---|
| Restore-CARoleService C:\ADCSBackup | Restore-CARoleService:进程无法访问文件,因为它正在被另一个进程使用。 (异常来自 HRESULT: 0x80070020)  | 
在运行 Restore-CARoleService cmdlet 之前停止 Active Directory 证书服务服务 | 
| Restore-CARoleService C:\ADCSBackup | Restore-CARoleService:目录不为空。 (HRESULT 中的异常:0x80070091) | 使用 -Force 参数覆盖预先存在的密钥 | 
| Backup-CARoleService C:\ADCSBackup -Password (Read-Host -Prompt“Password:” -AsSecureString) -DatabaseOnly | Backup-CARoleService:无法使用指定的命名参数解析参数集。 | -Password 参数仅用于对私钥进行密码保护,因此在未备份私钥时无效 | 
| Restore-CARoleService C:\ADCSBack15 -Password(Read-Host -Prompt“密码:”-AsSecureString) -DatabaseOnly | Restore-CARoleService:无法使用指定的命名参数解析参数集。 | -Password 参数仅用于对私钥进行密码保护,因此在未还原私钥时无效 | 
| Restore-CARoleService C:\ADCSBack14 -Password(Read-Host -Prompt“密码:”-AsSecureString) | Restore-CARoleService:系统找不到指定的文件。 (HRESULT 中的异常:0x80070002) | 指定的路径不包含有效的数据库备份。 可能是路径无效,或者备份已使用 -KeysOnly 选项进行过? | 
其他资源
请尝试以下操作:使用 Windows PowerShell 在实验室中备份 CA
通过本课中的命令备份使用密码保护的 CA 数据库和私钥。
此时请推迟还原 CA。