Отправить securestring для работы в модуле PowerShell

У меня есть функция в модуле Powershell, которая должна установить сеанс базы данных с SimplySql. SimplySql принимает объект учетных данных. Теперь у меня есть несколько проблем, чтобы отправить пароль в функцию. Что я пробовал:

  1. При использовании параметра $ password [строка] я получаю предупреждение "Parameter '$password' should use SecureString, otherwise this will expose sensitive information". Имеет смысл, поэтому я изменил параметр на securestring.

  2. Я создал защищенную строку с помощью "$SecurePassword = "myPassword" | ConvertTo-SecureString -AsPlainText -Force", снова импортировал модуль и вызвал функцию. Теперь я получаю следующее сообщение: Cannot process argument transformation on parameter 'Password'. Cannot convert the "System.Security.SecureString" value of type "System.String" to type "System.Security.SecureString". Я проверил SecureString с помощью $myLocalSecString.GetType(), и да, это Secure String.

  3. Поскольку я не нашел для этого никакого решения, я попытался установить [PSCredential]$cred в качестве объекта ввода. Я создал объект с помощью [pscredential]$_credObject = New-Object System.Management.Automation.PSCredential ("myusername", $SecurePassword). Когда я вызываю функцию сейчас, я получаю следующее сообщение:

PowerShell credential request
Enter your credentials.
Password for user System.Management.Automation.PSCredential:

Я думаю, что в сценариях 2 и 3 я неправильно создал SecureString, но я не понял, что делаю неправильно. Скрипт должен работать на Powershell Core.

Было бы здорово получить здесь хорошую подсказку.

заранее спасибо

Дэйв


person David Koenig    schedule 14.05.2021    source источник
comment
SimplySql принимает объект учетных данных - не могли бы вы подробнее рассказать об этом? Если целевой модуль принимает [pscredential], то лучшее, что вы можете сделать, - это принять и его и передать его модулю как есть, никогда не касайтесь пароля в виде открытого текста.   -  person Mathias R. Jessen    schedule 14.05.2021
comment
Да, SImplySql принимает объект учетных данных. Я попытался создать это и передать это своей функции, как описано выше (пункт 3). Но затем я получаю приглашение ввести свой пароль вручную.   -  person David Koenig    schedule 16.05.2021
comment
Не могли бы вы показать полный сценарий, который создает объект учетных данных и вызывает сценарий / функцию? Должно быть чего-то не хватает   -  person Mathias R. Jessen    schedule 16.05.2021
comment
Привет, извините за задержку, у нас был отпуск ;-). @Ma   -  person David Koenig    schedule 18.05.2021


Ответы (1)


извините за задержку, был отпуск ;-). Я попробовал это снова сейчас, чтобы предоставить вам полный образец кода. Я не знаю, что я изменил, но знаю, что это работает. Я действительно был уверен, что создал его с

$_secString = ConvertTo-SecureString "test" -AsPlainText -Force
[pscredential]$_credObject = New-Object System.Management.Automation.PSCredential("mydbuser", $_secString)

последний раз. Я сделал это с той же командой сегодня, и она работает. Странный. Mea culpa украла твое время ....

Действительно странно.

person David Koenig    schedule 18.05.2021