Безопасная строка не может быть расшифрована после 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.