Powershell: как получить учетные данные из кода C #? - PullRequest
2 голосов
/ 26 октября 2009

Я безуспешно пытался вызвать CMDlet «Get-Credential». Читая Powershell SDK, я нахожу абстрактный метод «PSHostUserInterface.PromptForCredential Method (String, String, String, String)» Есть ли объект, который реализует этот метод?

Любое другое решение?

Привет

Ответы [ 2 ]

4 голосов
/ 26 октября 2009

Просмотрите текущий объект пользовательского интерфейса хоста, чтобы запросить у пользователя учетные данные, например:

PSCredential cred = this.Host.UI.PromptForCredential("Enter username/password",
                                                     "", "", "");

Однако, если вы создаете командлет и идете по этому пути, а не создаете параметр Credential, тогда пользователь не сможет предоставить учетные данные в автоматическом режиме (т. Е. Через параметр параметра Credential).

Кстати, если ваша программа знает учетные данные и вы не хотите запрашивать конечного пользователя, вы можете создать новый PSCredential напрямую, например ::

var password = new SecureString();
Array.ForEach("opensesame".ToCharArray(), password.AppendChar);
var cred = new PSCredential("john", password);

Однако я бы не стал жестко кодировать пароль в EXE. Я бы использовал DPAPI или что-то в этом роде.

1 голос
/ 26 октября 2009

Вы пишете собственный PSHost? Если это так, то ваш пользовательский хост должен будет предоставить собственную реализацию PSHostUserInterface, а затем реализовать в нем PromptForCredential ().

Если вам нужно реализовать это самостоятельно и вы хотите использовать стандартное диалоговое окно учетных данных Windows, которое PowerShell использует по умолчанию, вы можете использовать CredUIPromptForCredentials () api. Есть некоторый код о том, как вызвать его из .NET здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...