Sysprep后无法解密安全字符串

时间:2015-01-06 22:32:13

标签: powershell securestring sysprep

我有两个PowerShell脚本,我正在为Windows 7映像构建。在图像之前,我运行PRE-IMAGE.ps1,它有一个这样的行:

$JoinDomainPassword = Read-Host -Prompt "Please enter the password for $joinDomainUser" -AsSecureString
$strPass = $joinDomainPassword | ConvertFrom-SecureString

然后我将$strPass安全字符串保存到注册表,然后运行sysprep。

使用sysprep重新启动后,POST-IMAGE.ps1然后从注册表中提取$strPass,并且有一行如下:

$strPass = $strPass | ConvertTo-SecureString
$credentials = New-Object System.Management.Automation.PSCredential ($JoinDomainUser, $strPass)

但是,POST-IMAGE.ps1中的这些行会在您将convertto-securestringconvertfrom-securestring作为不同的Windows用户运行时看到“密钥无效”错误。 (similiar to this question) - 但这里的捕获是I -AM-使用相同的用户转换为安全字符串和从安全字符串转换。我猜这与sysprep有关 - 但我无法绕过它。

如果之前有人问过这个问题我很抱歉,我发现了一些与此有关的问题,但没有描述我的确切问题。

1 个答案:

答案 0 :(得分:3)

如果没有为ConvertFrom-SecureString命令指定密钥,它将使用DPAPI加密字符串。 Sysprep显然重新初始化了DPAPI使用的密钥。来自http://www.mombu.com/microsoft/security-crypto/t-local-machine-masterkey-in-dpapi-1053937-print.html

  

DPAPI将在sysprep的专门化阶段生成本地系统主密钥。