我正在尝试通过c#代码调用PowerShell函数。
**#This is sample PowerShell function**
function Add-num {
param($int1,$int2)
Write-Host ($int1 + $int2)
}
**#This is my c# code**
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.AddCommand("Add-num").AddParameters(new Dictionary<string, string>
{
{"int1","6" },
{"int2","7" }
});
// Collection<PSObject> PSOutput = PowerShellInstance.Invoke();
foreach (PSObject outputItem in PowerShellInstance.Invoke())
{
Console.WriteLine(outputItem.BaseObject);
}
runspace.Close();
}
}
}
错误:System.Management.Automation.dll中出现未处理的“System.Management.Automation.CommandNotFoundException”类型异常
其他信息:术语“Add-num”未被识别为cmdlet,函数,脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
执行此代码时会抛出上述错误。但是,当我从PowerShell代码运行时,工作正常。我检查了文件路径和文件名一切都很好,任何人都可以帮助我。该错误指向Invoke。
答案 0 :(得分:0)
我之前做过以下事情:
string command = @"C:\temp.ps1";
var fileName = "powershell";
var args = $"-ExecutionPolicy unrestricted . '{command}'";
var process = CreateProcess(fileName, args);
process.Start();