![](/img/trans.png)
[英]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.