Я видел один пример, который использует Import / Export-CLIXML.
Это мои любимые команды для решения проблемы, которую вы пытаетесь решить. И самый простой способ их использования.
$passwordPath = './password.txt'
if (-not (test-path $passwordPath)) {
$cred = Get-Credential -Username domain\username -message 'Please login.'
Export-Cli -InputObject $cred -Path $passwordPath
}
$cred = Import-CliXML -path $passwordPath
Поэтому, если файл не существует локально, он запросит учетные данные и сохранит их. Это займет[pscredential]
объект без проблем и скроет учетные данные как безопасную строку.
Наконец, просто используйте учетные данные, как обычно.
Restart-Computer -ComputerName ... -Credentail $cred
Примечание по Securty :
Надежно хранить учетные данные на диске
Читая Решение, вы можете сначала с осторожностью хранить пароль на диске. Хотя вполне естественно (и разумно) с осторожностью относиться к засорению жесткого диска конфиденциальной информацией, командлет Export-CliXml шифрует объекты учетных данных с помощью стандартного API защиты данных Windows. Это гарантирует, что только ваша учетная запись может правильно расшифровать его содержимое. Аналогично, командлет ConvertFrom-SecureString также шифрует предоставленный вами пароль.
Изменить: Просто перечитайте оригинальный вопрос. Вышеописанное будет работать до тех пор, пока вы инициализируете [pscredential]
жесткий диск. То есть, если вы уроните это в свой сценарий и запустите сценарий, как только он создаст этот файл, а затем запустить сценарий без присмотра будет просто.