从C#Exception调用PowerShell AddCommand

时间:2016-07-08 02:37:20

标签: powershell azure systemmanagement powershell-hosting

我正在尝试构建一个C#控制台应用程序,该应用程序执行一系列针对Azure订阅运行的PowerShell命令。

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附加信息:术语   ' $ cred = Get-Credential'不被识别为cmdlet的名称,   函数,脚本文件或operabl ...

如果我从CMD启动PowerShell,请输入

$ cred = Get-Credential

我看到了默认的交互式登录框,用户可以输入凭据并将其捕获到$ cred,我可以继续。

使用C#实现此功能的正确命令是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

这不是一项小任务,但你可以使用Wpf在powershell中创建ui。从一个推出。 NET控制台应用程序,您可以创建一个powershell运行空间,创建您的登录提示ui并从那里开始。我们这样做了,但有一个非常具体的用例 - 对于大多数情况,你通常不会像你建议的那样混合两者。 https://foxdeploy.com/2015/04/10/part-i-creating-powershell-guis-in-minutes-using-visual-studio-a-new-hope/