我想构建一个C#控制台应用程序,该应用程序执行一系列针对Azure订阅运行的PowerShell命令。从C#调用的PowerShell AddCommand异常
var line1 = "$cred = Get-Credential"
var line2 = "Add-AzureAccount -Credential $cred"
var psi = PowerShell.Create()
psi.AddCommand(line1);
psi.AddCommand(line2);
var output = psi.Invoke();
我以为它会呈现一个交互式登录框,然后继续运行。相反,这是抛出:
类型的未处理的异常 'System.Management.Automation.CommandNotFoundException' 发生在 System.Management.Automation.dll附加信息:术语 “$名气= GET-凭证“没有被识别为cmdlet, 功能,脚本文件,或operabl的名字......
如果我从CMD开始的PowerShell,并键入
$名气= GET-凭证
我得到了默认的交互式登录框,用户可以输入凭证并将它们捕获到$ cred中,然后我可以继续。
什么是正确的命令集,使这项工作在C#中?
谢谢。
默认情况下,在PowerShell中没有命令带有这样奇怪的名称'$ cred = Get-Credential'或'Add-AzureAccount -Credential $ cred'。另外,'Get-Credential'不提供交互式登录框。由'$ Host.UI.PromptForCredential'提供的交互式登录框。所以,你需要提供支持这种方法的'PSHost'实例。 – PetSerAl
@PetSerAl - 我不明白如何向用户提供从C#运行Posh时熟悉的交互式默认登录框。理想情况下,我想要使用Posh,并在.NET代码中运行它,该怎么做? – Snowy