Powershell:如何从 C# 代码中获取凭据?

2 powershell

我试图在没有运气的情况下调用“Get-Credential”CMDlet。阅读 Powershell SDK 我发现抽象方法“PSHostUserInterface.PromptForCredential Method (String, String, String, String)”。有没有实现这个方法的对象?

还有其他解决办法吗?

问候

Kei*_*ill 5

遍历当前主机的 UI 对象以提示用户输入凭据,如下所示:

PSCredential cred = this.Host.UI.PromptForCredential("Enter username/password",
                                                     "", "", "");
Run Code Online (Sandbox Code Playgroud)

但是,如果您正在创建一个 cmdlet 并采用此路径而不是创建 Credential 参数,则用户将无法以自动方式(即通过 Credential 参数的参数)提供凭证。

顺便说一句,如果您的程序知道凭据并且您不想提示最终用户,那么您可以直接创建一个新的 PSCredential 例如:

var password = new SecureString();
Array.ForEach("opensesame".ToCharArray(), password.AppendChar);
var cred = new PSCredential("john", password);
Run Code Online (Sandbox Code Playgroud)

但是我不会在 EXE 中硬编码密码。我会使用 DPAPI 或类似的东西。