我有一个powershell脚本,可以创建一个azure vm并在服务器上安装Microsoft Dynamics Nav等等。脚本设置了一堆变量然后调用下标。
我可以通过管道从C#调用这个脚本,没有问题。虚拟机被创建和所有东西。
但是如果我创建一个WCF客户端和服务并且服务创建管道并执行脚本,则存在一个主要问题。
不知何故,下标和知道所有变量。
简而言之:如果呼叫直接来自控制台程序,我的脚本如何运作完美,但如果呼叫是通过wcf进行的话,那么该怎么办?
Ps:这不是关于权利的问题,因为wcf服务是IIS托管的,并在管理员帐户下运行。
这就是我在wcf和直接项目中调用脚本的方式。< / p>
string path = "absolute path to script.ps1"
Runspace runSpace = RunspaceFactory.CreateRunspace();
runSpace.Open();
try
{
RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runSpace);
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
Pipeline pipeLine = runSpace.CreatePipeline();
Command myCommand = new Command(path);
param = new CommandParameter("some value","some value")
myCommand.Parameters.Add(param);
pipeLine.Commands.Add(myCommand);
var results = pipeLine.Invoke();
runSpace.Close();
return true;
}
catch (Exception)
{
runSpace.Close();
return false;
}