所有在我的开发机器上工作正常,但如果部署到IIS,则该过程无法启动。我正在通过
启动一个powershell脚本 private void RunScript()
{
Process process = null;
try
{
int timeout = 1800000;
var startInfo = new ProcessStartInfo
{
FileName = @"powershell.exe",
Arguments = string.Format("{0} {1}", "\path\toscript", "myParam"),
UseShellExecute = false,
CreateNoWindow = true
};
process = Process.Start(startInfo);
process.WaitForExit(timeout);
}
finally
{
if (!process.HasExited)
{
if (process.Responding)
process.CloseMainWindow();
else
process.Kill();
}
if (process != null)
{
process.Close();
process.Dispose();
}
}
}
这是为其运行的应用程序池配置的内容。
流程模型
- >身份=域管理员的域用户。
- >加载用户个人资料=真
Web App
身份验证是Windows
我还需要配置什么才能运行Process?
答案 0 :(得分:3)
作为Start-Automating建议我最终做到了这一点:
using (Runspace runSpace = RunspaceFactory.CreateRunspace())
{
try
{
runSpace.Open();
RunspaceInvoke scriptInvoker = new RunspaceInvoke(runSpace);
scriptInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
using (Pipeline pipeLine = runSpace.CreatePipeline())
{
var myCommand = new Command(scriptPath);
var myParam1 = new CommandParameter("-paramName", "someValue");
myCommand.Parameters.Add(myParam1);
pipeLine.Commands.Add(myCommand);
pipeLine.Commands.Add("Out-String");
Collection<PSObject> returnObjects = pipeLine.Invoke();
runSpace.Close();
return returnObjects;
}
}
finally
{
runSpace.Close();
}
}
在IIS服务器上,我执行了以下powershell命令“Set-ExecutionPolicy RemoteSigned”
答案 1 :(得分:1)
将PowerShell API嵌入调用.exe
会好得多这是一个旧的链接,它将为您提供每个用户嵌入ASP.NET的PowerShell运行空间:
答案 2 :(得分:0)
检查powershell.exe
所在的文件系统的权限。
另外,请检查Security Log
中的Event Viewer
是否存在身份验证错误和访问冲突。