所有我都是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变量赋值答案 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)