[英]Using Powershell in an ASP.NET application deployed to an IIS server
[英]ASP.Net application executing powershell scripts as IIS_USR
我正在构建一个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环境,该环境将以登录用户的身份执行(如果需要,我会满足于重新询问凭据)
谢谢
我已经查看了PSCredential对象,这似乎是正确的事情,但我仍然无法弄清楚如何将它插入到整个会话中(有关将其用作cmdlet参数的大量信息)需要凭证)
我有一个ASP.NET站点,需要权限共享来运行EXE和.BAT文件。
此示例使用应用程序池和本地帐户,您也可以使用域帐户。
虽然您可能能够做到这一点,但安全隐患并不是很好。
对于类似的要求,我们创建了一个服务层来处理传入脚本或命令的传入请求,并将它们存储在客户端以便拉出队列并执行它们。
客户端可以是Windows服务,也可以只是在计算机上运行的脚本。
Web应用程序无法访问运行它的计算机或网络上的本地资源,这是一个很好的理由。
如果您仍想这样做,只需将应用程序池配置为使用上面建议的其他标识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.