簡體   English   中英

ASP.Net應用程序將powershell腳本作為IIS_USR執行

[英]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環境,該環境將以登錄用戶的身份執行(如果需要,我會滿足於重新詢問憑據)

謝謝

編輯1

我已經查看了PSCredential對象,這似乎是正確的事情,但我仍然無法弄清楚如何將它插入到整個會話中(有關將其用作cmdlet參數的大量信息)需要憑證)

我有一個ASP.NET站點,需要權限共享來運行EXE和.BAT文件。

此示例使用應用程序池和本地帳戶,您也可以使用域帳戶。

  1. 在服務器上創建本地帳戶(使其成為服務器上的管理員)
  2. 為該帳戶授予powershell腳本所在文件夾的完整權限。
  3. 創建一個新的IIS池並將該帳戶設置為在此新的本地帳戶下運行
  4. 在IIS中更改您的站點以使用此新池

雖然您可能能夠做到這一點,但安全隱患並不是很好。

對於類似的要求,我們創建了一個服務層來處理傳入腳本或命令的傳入請求,並將它們存儲在客戶端以便拉出隊列並執行它們。

客戶端可以是Windows服務,也可以只是在計算機上運行的腳本。

Web應用程序無法訪問運行它的計算機或網絡上的本地資源,這是一個很好的理由。

如果您仍想這樣做,只需將應用程序池配置為使用上面建議的其他標識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM