使用 Powershell 在 sysprep 期间存储安全字符串

使用 Powershell 在 sysprep 期间存储安全字符串

我有两个为 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 用户身份运行 convertto-securestring 和 convertfrom-securestring 时,POST-IMAGE.ps1 中的这些行会出现“密钥无效”错误。(类似于这个问题) - 但这里的问题是我 -AM- 使用同一个用户来转换安全字符串。我猜这与 sysprep 有关 - 但我不明白。

如果之前有人问过这个问题,我深感抱歉,我发现有几个问题涉及到这个问题的部分内容,但并没有描述我确切的问题。

答案1

或者,您可以将凭证保存为 Base64 字符串。它未加密,但可以防止儿童的智力水平受到侵犯。

将字符串转换为 Base64 字符串: [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("你好“))

将 Base64 字符串转换回字符串 [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("aGVsbG8=“))

泰国人满足了我的需求,但你可能有不同的顾虑。

相关内容