【问题标题】:How do I Run PowerShell command in windows form application?如何在 Windows 窗体应用程序中运行 PowerShell 命令?
【发布时间】:2013-11-05 05:35:27
【问题描述】:

我目前正在尝试在我的 c# 表单应用程序中实现以下 ps 命令。

我正在使用 Quest Powershell cmdlet

    Add-PSSnapin -Name Quest.ActiveRoles.ADManagement
    get-qadmemberof -identity 'ssc\rpimentel' | Where-Object {$_.Name -ne "Domain Users"} | Add-QADGroupmember -member 'ktest'

我拥有的 powershell 命令可以工作,但我无法让下面的代码工作。找不到命令 抛出异常“Get-QADMemberOf 术语未被识别为 cmdlet 的名称。

            PowerShell ps = PowerShell.Create();

            PSCommand cmd1 = new PSCommand();
            cmd1.AddCommand("Import-Module");
            cmd1.AddParameter("activedirectory");
            cmd1.AddCommand("Add-PSSnapin");
            cmd1.AddParameter("Name", "Quest.ActiveRoles.ADManagement");
            cmd1.AddCommand("Get-QADMemberOf");
            cmd1.AddParameter("identity", "rpimentel");
            cmd1.AddCommand("where-object");
            ScriptBlock filter = ScriptBlock.Create("$_.Name -ne 'Domain Users'");
            cmd1.AddParameter("FilterScript", filter);
            cmd1.AddCommand("Add-QADGroupmember");
            cmd1.AddParameter("Member", "ktest");

            ps.Commands = cmd1;
            ps.Invoke();

【问题讨论】:

  • 我们可能需要更多关于“无法让它在我的应用程序中工作”的意思的信息......尝试在无配置文件的 powershell 中运行你的命令,看看它是否仍然工作。
  • 不确定你的意思。它是一个 Windows 窗体应用程序。我创建了一个在单击按钮时执行的方法。以上是我在该方法中的代码。
  • 是的,那么问题是什么?它怎么不工作?你试过什么?你能让它在powershell中执行一个更简单的命令吗,比如get-childitem?编辑问题以向我们提供更多详细信息,以便我们为您提供帮助。
  • 实际的 powershell 命令有效。它的 C# 代码不起作用。它返回 Get-QADMemberOf 无法识别 cmd。我编辑了我的问题以在调试代码时显示错误。
  • 我对 C# 编码一无所知,但看看你所拥有的,我看不出有什么可以区分作为单独语句运行的命令和流水线命令的命令。该命令结构缺少一些位。

标签: c# powershell visual-studio-2012 active-directory runspace


【解决方案1】:

根据我的评论,可以尝试以下方法:

        PowerShell ps = PowerShell.Create();

        PSCommand cmd1 = new PSCommand();
        cmd1.AddCommand("Import-Module");
        cmd1.AddParameter("activedirectory");
        ps.Commands = cmd1;
        ps.Invoke();

        cmd1.AddCommand("Add-PSSnapin");
        cmd1.AddParameter("Name", "Quest.ActiveRoles.ADManagement");
        ps.Commands = cmd1;
        ps.Invoke();

        cmd1.AddCommand("Get-QADMemberOf");
        cmd1.AddParameter("identity", "rpimentel");
        cmd1.AddCommand("where-object");
        ScriptBlock filter = ScriptBlock.Create("$_.Name -ne 'Domain Users'");
        cmd1.AddParameter("FilterScript", filter);
        cmd1.AddCommand("Add-QADGroupmember");
        cmd1.AddParameter("Member", "ktest");
        ps.Commands = cmd1;
        ps.Invoke();

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多