无法在 IIS 托管的 .net web api 项目中运行 powershell 脚本

Posted

技术标签:

【中文标题】无法在 IIS 托管的 .net web api 项目中运行 powershell 脚本【英文标题】:Unable to run powershell script in IIS hosted .net web api project 【发布时间】:2020-09-02 03:06:42 【问题描述】:

我正在尝试在.net web api 项目中运行powershell 脚本(脚本用于更新Excel 工作表数据),如下所示,

 var ps1File = @"C:\ActiveLKTel.ps1";
 var startInfo = new ProcessStartInfo()
 
      FileName = "powershell.exe",
      Arguments = $"-NoProfile -ExecutionPolicy unrestricted \"ps1File\"",
      UseShellExecute = false
 ;
 Process.Start(startInfo);

当我在 localhost 中运行 .net web api 项目时,这工作正常,但是当我在 IIS 中部署 .net web api 项目时,这不起作用

谁能告诉我如何解决这个问题?

【问题讨论】:

【参考方案1】:

您应该使用-File 参数。

var ps1File = @"C:\ActiveLKTel.ps1";
var startInfo = new ProcessStartInfo()

     FileName = "powershell.exe",
     Arguments = $"-NoProfile -ExecutionPolicy unrestricted -File \"ps1File\"",
     UseShellExecute = false
;
Process.Start(startInfo);

当您在 IIS 中运行脚本时,它不起作用,因为该脚本将在 IIS 应用程序池上的用户上下文中运行。此帐户是否有权:

运行脚本 在脚本中执行操作

【讨论】:

以上是关于无法在 IIS 托管的 .net web api 项目中运行 powershell 脚本的主要内容,如果未能解决你的问题,请参考以下文章

我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf

IIS 上的 .Net 5.0 Web API 部署问题

无法让 ASP.NET Core Web API 与 IIS 一起使用 [关闭]

IIS 上的 Angular 发布到 Asp.Net(非核心)Web Api 错误 415

无法在 IIS 中托管 Web 服务

无法在 IIS Express 中运行 ASP.NET Core Web API 项目