Безопасная строка не может быть расшифрована после 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-securestring а также convertfrom-securestring как разные пользователи Windows. ( похоже на этот вопрос) - но выгода здесь в том, что я использую одного и того же пользователя для преобразования в и из защищенных строк. Я предполагаю, что это как-то связано с sysprep - но я не могу обернуться вокруг этого.

Я прошу прощения, если об этом уже спрашивали, я нашел несколько вопросов, которые касаются некоторых частей этого, но не описывают мою ТОЧНУЮ проблему.

1 ответ

Решение

Если вы не укажете ключ для команды ConvertFrom-SecureString, он будет использовать DPAPI для шифрования строки. Sysprep, по-видимому, повторно инициализирует ключ, используемый DPAPI. От http://www.mombu.com/microsoft/security-crypto/t-local-machine-masterkey-in-dpapi-1053937-print.html

DPAPI сгенерирует главный системный ключ на этапе специализации sysprep.

Другие вопросы по тегам