使用System.Management.Automation调用Powershell ps1文件

时间:2018-01-10 16:43:52

标签: c# powershell

我有以下c#代码:

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

var runSpaceInvoker = new RunspaceInvoke(runspace);
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");

// create a pipeline and feed it the script text
var pipeline = runspace.CreatePipeline();
var command = new Command(@". .\MyScript.ps1");
command.Parameters.Add("MyParam1", value1);
command.Parameters.Add("MyParam2", value2);
pipeline.Commands.Add(command);

pipeline.Invoke();
runspace.Close();

但我收到错误Powershell ps1文件“无法识别为cmdlet,函数,可操作程序或脚本文件。”

MyScript.ps1被复制到bin文件夹,因此它与正在运行的程序处于同一级别。

我发现了Powershell ps1 file "is not recognized as a cmdlet, function, operable program, or script file."

但它没有解决问题。知道还有什么可能导致这个错误吗?

1 个答案:

答案 0 :(得分:1)

问题可能是您的应用程序从父进程继承其工作目录,因此您无法预测{{1}}是指可执行文件所在的目录。

您可以使用以下内容构建脚本的完整路径:

{{1}}