1

我正在为 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)

但是,当您以不同的 Windows 用户运行时,这些行POST-IMAGE.ps1会出现“密钥无效”错误。(类似于这个问题) - 但这里的问题是我 -AM- 使用同一个用户来转换安全字符串。我猜这与 sysprep 有关 - 但我无法理解它。convertto-securestringconvertfrom-securestring

如果之前有人问过这个问题,我深表歉意,我发现了一些涉及部分内容的问题,但不要描述我的确切问题。

4

1 回答 1

3

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

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

于 2015-01-07T04:47:45.173 回答