CA 备份和还原 Windows PowerShell cmdlet
作者:Justin Turner,Windows 组的高级支持升级工程师
注意
本内容由 Microsoft 客户支持工程师编写,适用于正在查找比 TechNet 主题通常提供的内容更深入的有关 Windows Server 2012 R2 中的功能和解决方案的技术说明的有经验管理员和系统架构师。 但是,它未经过相同的编辑审批,因此某些语言可能看起来不如通常在 TechNet 上找到的内容那么精练。
概述
Windows Server 2012 中引入了 ADCSAdministration Windows PowerShell 模块。 在 Windows Server 2012 R2 中向此模块添加了两个新的 cmdlet,以支持 CA 的备份和还原。
Backup-CARoleService
Restore-CARoleService
Backup-CARoleService
ADCSAdministration Cmdlet:Backup-CARoleService
参数 - 粗体参数是必需的 | 说明 |
---|---|
-Path | - 字符串,用于保存备份的位置 - 这是唯一未命名的参数 - 位置参数 示例: Backup-CARoleService.-Path c:\adcsbackup1 Backup-CARoleService c:\adcsbackup2 |
-KeyOnly | - 备份不包含数据库的 CA 证书 示例: Backup-CARoleService c:\adcsbackup3 -KeyOnly |
-Password | - 指定用于保护 CA 证书和私钥的密码 - 必须是安全字符串 - 对 -DatabaseOnly 参数无效 例如: Backup-CARoleService c:\adcsbackup4 -Password (Read-Host -prompt "Password:" -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
参数 - 粗体参数是必需的 | 说明 |
---|---|
-Path | - 字符串,从中还原备份的位置 - 这是唯一未命名的参数 - 位置参数 示例: Restore-CARoleService.-Path c:\adcsbackup1 -Force Restore-CARoleService c:\adcsbackup2 -Force |
-KeyOnly | - 还原不包含数据库的 CA 证书 - 如果备份已使用 -KeyOnly 选项进行,则必须指定此项 示例: Restore-CARoleService c:\adcsbackup3 -KeyOnly -Force |
-Password | - 指定 CA 证书和私钥的密码 - 必须是安全字符串 示例: Restore-CARoleService c:\adcsbackup4 -Password (read-host -prompt "Password:" -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 |
问题
如果在使用带 -Password 参数的 Backup-CARoleService 时 ConvertTo-SecureString 函数失败,则会进行非密码保护备份。
常见错误
操作 | 错误 | 注释 |
---|---|---|
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 "Password:" -AsSecureString) -DatabaseOnly | Restore-CARoleService:无法使用指定的命名参数解析参数集。 | -Password 参数仅用于对私钥进行密码保护,因此在未还原私钥时无效 |
Restore-CARoleService C:\ADCSBack14 -Password (Read-Host -Prompt "Password:" -AsSecureString) | Restore-CARoleService:系统找不到指定的文件。 (HRESULT 中的异常:0x80070002) | 指定的路径不包含有效的数据库备份。 可能是路径无效,或者备份已使用 -KeysOnly 选项进行过? |
其他资源
请尝试以下操作:使用 Windows PowerShell 在实验室中备份 CA
通过本课中的命令备份使用密码保护的 CA 数据库和私钥。
此时请推迟还原 CA。