我試圖調用一個函數在一個PowerShell文件如下PowerShell的功能:問題與調用從C#
string script = System.IO.File.ReadAllText(@"C:\Users\Bob\Desktop\CallPS.ps1");
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.Open();
using (Pipeline pipeline = runspace.CreatePipeline(script))
{
Command c = new Command("BatAvg",false);
c.Parameters.Add("Name", "John");
c.Parameters.Add("Runs", "6996");
c.Parameters.Add("Outs", "70");
pipeline.Commands.Add(c);
Collection<PSObject> results = pipeline.Invoke();
foreach (PSObject obj in results)
{
// do somethingConsole.WriteLine(obj.ToString());
}
}
}
PowerShell的功能是在CallPS.ps1:
Function BatAvg
{
param ($Name, $Runs, $Outs)
$Avg = [int]($Runs/$Outs*100)/100
Write-Output "$Name's Average = $Avg, $Runs, $Outs "
}
我會得到以下例外:
術語「BatAvg」未被識別爲cmdlet,函數,腳本文件或可操作程序的名稱。
我做錯了什麼,我承認,我對PowerShell知之甚少。
不,仍然會得到相同的異常:runspace.Open(); PowerShell ps = PowerShell.Create(); ps.Runspace =運行空間; ps.AddScript(script); 命令c = new Command(「BatAvg」,false); ps.AddCommand(「BatAvg」,false); ps.AddParameter(「Name」,「John」); ps.AddParameter(「Runs」,「6996」); ps.AddParameter(「Outs」,「70」); ()中的PSObject obj) // do somethingConsole.WriteLine } – user577240