c# - ASP.Net 应用程序作为 IIS_USR 执行 powershell 脚本

标签 c# asp.net asp.net-mvc powershell credentials

我正在构建一个 asp.net mvc 应用程序,它将作为我们为管理日常任务而编写的许多 powershell 脚本的包装器运行(最终目标是让非技术人员更容易使用脚本)。

我已经设法让脚本很好地执行:

var ctx = System.Web.HttpContext.Current;
var file = ctx.Server.MapPath("~/Content/Powershell/psStoreLive.ps1"); #activate a store
var shell = PowerShell.Create();
shell.AddCommand(file);  
shell.AddArgument(o.DBName);   # which store should we activate
var results = shell.Invoke();  # and then process the results....display output of script

问题是脚本正在作为 IIS_USR(或类似)执行。

我需要找到一种方法让 IIS 服务器以当前登录用户身份执行脚本(使用 Windows 身份验证 (<authentication mode="Windows" />))。

我看过 http://stackoverflow.com/questions/10837377/loginview-and-passing-credentials-to-powershell而且,虽然这看起来可能会奏效,但我对这个想法并不满意。

在我看来,我应该能够使用一些 C# 代码来执行此操作,如上面的代码块中所示,但我无法通过搜索找到任何可以执行此操作的内容。

我如何在 C# 中创建一个将作为登录用户执行的 powershell 环境(如有必要,我什至愿意重新询问凭据)

谢谢

编辑 1

我查看了 PSCredential 对象,这似乎是正确的事情,但我仍然无法弄清楚如何将它插入到整个 session 中(关于将它用作参数的大量信息需要凭据的 cmdlet)

最佳答案

我有一个 ASP.NET 站点需要共享权限才能运行 EXE 和 .BAT 文件。

此示例使用应用程序池和本地帐户,您也可以使用域帐户。

  1. 在服务器上创建一个本地帐户(使其成为服务器上的管理员)
  2. 授予该帐户对 powershell 脚本所在文件夹的全部权限。
  3. 创建一个新的 IIS 池并将帐户设置为在这个新的本地帐户下运行
  4. 在 IIS 中更改您的站点以使用这个新池

关于c# - ASP.Net 应用程序作为 IIS_USR 执行 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661170/

相关文章:

asp.net-mvc - ASP.NET MVC(四)——按一定顺序绑定(bind)属性

c# - 如何使用防伪 token 识别帖子数据被黑客入​​侵

c# - 如何优化此 LINQ 查询以仅执行单个 SQL 命令?

c# - 在 WPF 中定义宽度和高度的自定义表达式

C# 委托(delegate)到 Java 的转换

.net - 静态存储库是使用 NHibernate 的正确方法吗?

c# - 试图在 .NET 应用程序中读取或写入 protected 内存

asp.net - 如何获取 iframe 的当前位置?

c# - 将 mailto 链接添加到 actionlink

asp.net-mvc - 为什么LINQ to Entities无法识别方法'System.String ToString()?