【发布时间】:2017-09-30 06:48:16
【问题描述】:
我正在尝试从 C# 调用脚本文件中包含的 powershell 函数。 当它是一个字符串变量时,我能够成功调用该函数,但是当我尝试从脚本文件中调用它时,我得到了这个错误:
“Test-Me”一词未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。
从 C# 调用脚本文件函数还需要什么?
public string RunScriptFunction(string userName)
{
//var script = "function Test-Me($param1, $param2) { \"Hello from Test-Me with $param1, $param2\" }";
var script = ". C:\\TestMe.ps1";
using (var powershell = PowerShell.Create())
{
powershell.AddScript(script);
var results1 = powershell.Invoke();
powershell.Commands.Clear();
powershell.AddCommand("Test-Me").AddParameter("param1", userName).AddParameter("param2", "HELLO");
var results = powershell.Invoke();
var stringBuilder = new StringBuilder();
foreach (PSObject obj in results)
{
stringBuilder.AppendLine(obj.ToString());
}
return stringBuilder.ToString();
}
}
【问题讨论】:
-
尝试删除 .来自
var script = ". C:\\TestMe.ps1" -
'.'需要,这称为“点源”,是导入 PowerShell 函数的旧方法(顺便说一句,新方法是使用模块)
-
我已经尝试过了,但没有帮助。我也尝试使用 global:funcName 无济于事。
标签: c# powershell