术语“添加数字”不会被识别为cmdlet,函数,脚本文件或可操作程序的名称

时间:2018-01-25 07:22:45

标签: c# powershell c#-4.0 powershell-v3.0 powershell-v4.0

所有我都是PowerShell和C#编程的新手,试图完成一些代码。

首先,我在PowerShell中编写了一个函数,代码如下所示

function Add-Number{

param($int1,$int2)

Write-Host ($int1 + $int2)

}

接下来,我正在编写c#代码并将参数传递给PowerShell Add-Number函数和c#代码,如下所示。

namespace TestInputs
{
    class Program
    {
        static void Main(string[] args)
        {

            String file = @"E:\powershell\Untitled3.ps1";

            Runspace runspace = RunspaceFactory.CreateRunspace();
            runspace.Open();

            using (PowerShell PowerShellInstance = PowerShell.Create())
            {
                PowerShellInstance.AddScript(file);
                PowerShellInstance.Invoke();
                PowerShellInstance.AddCommand("Add-Number");
                PowerShellInstance.AddParameter("int1", "10");
                PowerShellInstance.AddParameter("int2", "20");
                Collection<PSObject> PSOutput = PowerShellInstance.Invoke();
                Console.WriteLine(PSOutput);
                Console.ReadKey();
                runspace.Close();
            }
        }
    }
}

当我运行c#代码

System.Management.Automation.dll中发生未处理的“System.Management.Automation.CommandNotFoundException”类型异常

其他信息:术语“添加数字”不会被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

抛出了错误。

我的问题是我们能否使用c#代码将参数传递给脚本文件,如果是这样我们如何才能实现这一点。 有没有办法使用c#code ???

为PowerShell变量赋值

2 个答案:

答案 0 :(得分:0)

Add-Number(如所写)不是一个命令,它只是一个函数。因此,要在运行空间中调用它,您需要使用&#34; Add-Number -a 10 -b 20&#34;的内容运行脚本。

如果你想让自己的命令出现,试试这样的教程: Using C# to Create PowerShell Cmdlets: The Basics

答案 1 :(得分:0)

在Untitled3.ps1中使用以下代码。注意我没有测试过这个,但你明白了。

Breakfast & Brunch;American (Traditional);Restaurants
Sandwiches;Restaurants

然后在C#中你可以这样。

[CmdletBinding()]
param(
    [parameter(Mandatory=$true)]
    [int] $a,
    [parameter(Mandatory=$true)]
    [int] $b
)

write-host ($a + $b)