我正在构建一个 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 环境(如果有必要,我什至会重新请求凭据)
Thanks
Edit 1
我已经查看了 PSCredential 对象,这似乎是正确的事情,但我仍然无法弄清楚如何将其插入到整个会话中(有很多关于将其用作 cmdlet 的参数的信息)需要凭证)
我有一个 ASP.NET 站点,需要共享权限才能运行 EXE 和 .BAT 文件。
本示例使用应用程序池和本地帐户,您也可以使用域帐户。
- 在服务器上创建本地帐户(使其成为服务器上的管理员)
- 授予该帐户对 powershell 脚本所在文件夹的完全权限。
- 创建一个新的 IIS 池并将帐户设置为在此新的本地帐户下运行
- 在 IIS 中更改您的站点以使用这个新池
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)