Функция, содержащая вызов для ConvertTo-SecureString
, не работает в сеансе удаленного взаимодействия Powershell при запуске с использованием Invoke-Command
.
Я создал новую конфигурацию PSSessionConfiguration со свойством RunAsVirtualAccount = $true
. Эта конфигурация сеанса загружает модуль, содержащий функцию foo
, которая выполняет вызов Convert-ToSecureString -AsPlaintext -Force
. При попытке запустить foo удаленно, используя
Invoke-Command -Session $PSSession `
-Scriptblock { foo }
Я получаю исключение:
Операция защиты данных не удалась. Это может быть вызвано тем, что профиль пользователя не загружен для пользовательского контекста текущего потока, что может быть в случае, когда поток имитирует
Защищенная строка впоследствии используется для создания [PSCredential]
объекта.
Я видел это сообщение в блоге о зависимости ConvertTo-SecureString от DPAPI и профиле пользователя, что соответствует возвращенному исключению. Но он не содержит параметров разрешения.