如何从ASP.NET调用Powershell命令



我正在使用System.Management.Automation.dll从ASP.NET WebAPI调用powershell命令。我正在尝试按需启动和停止windows服务窗体ASP.NET WebAPI。在我的本地机器上,它工作得很好。

但当我调用API来启动或停止windows服务时,它会给我以下错误,找不到任何服务名称为"日志读取器"的服务

正在使用以下命令,

Start-Service -Name 'Log Reader' -Verbose
Stop-Service -Name 'Log Reader' -Verbose

我的代码是,filename是powershell命令文件的名称,

var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
var ps = PowerShell.Create();
ps.Runspace = runspace;

string script = GetScript(status, fileName);
ps.Commands.AddScript(script);
var result = ps.Invoke();
StringBuilder sb = new StringBuilder();
foreach (var r in result)
{
sb.Append(r.ToString());
sb.Append("n");
}
sb.Remove(0, sb.Length);
foreach (var error in ps.Streams.Error.ReadAll())
{
sb.Append(error.ToString());
sb.Append("n");
}
runspace.Close();

在这里,我使用服务帐户作为应用程序池标识。Windows服务也使用powershell调用一些命令,并且在相同的服务帐户下完全执行。

我认为这可能与IIS有关。请帮帮我。

应用程序池用户存在访问权限问题。一旦它被给予,我可以调用Windows服务。

最新更新