我有两个用于Windows 7镜像的PowerShell脚本。在图像之前,我运行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
中的这些行会出现“密钥无效”错误,当您以不同的Windows用户身份运行convertto-securestring
和convertfrom-securestring
时,会看到此错误。 (similiar to this question)-但要注意的是I -AM-使用同一用户在安全字符串之间进行转换。我猜想这与sysprep有关-但是我无法解决这个问题。很抱歉,以前是否有人问过这个问题,我发现了一些与此问题有关的问题,但是没有描述我的确切问题。
最佳答案
如果未为ConvertFrom-SecureString命令指定密钥,它将使用DPAPI加密字符串。 Sysprep显然会重新初始化DPAPI使用的密钥。从http://www.mombu.com/microsoft/security-crypto/t-local-machine-masterkey-in-dpapi-1053937-print.html
关于powershell - Sysprep之后无法解密安全字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27808392/