我有两个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-securestring
和convertfrom-securestring
作为不同的Windows用户运行时看到“密钥无效”错误。 (similiar to this question) - 但这里的捕获是I -AM-使用相同的用户转换为安全字符串和从安全字符串转换。我猜这与sysprep有关 - 但我无法绕过它。
如果之前有人问过这个问题我很抱歉,我发现了一些与此有关的问题,但没有描述我的确切问题。
答案 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的专门化阶段生成本地系统主密钥。