我一直在嘗試從asp.net運行一個PowerShell腳本,但幾天都沒有成功。從ASP.NET運行PowerShell腳本
C#的是:
using (var process = new Process())
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"powershell.exe";
startInfo.Arguments = "arguments that call the script here";
startInfo.RedirectStandardOutput = false;
startInfo.RedirectStandardError = false;
startInfo.UseShellExecute = true;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;
process.Start();
}
它調用PowerShell腳本包含FF:
robocopy "\\network-server\location" "C:\localfolder" "testmovefile.txt"
顯然,這裏的問題是正確的憑據。但我試過做各種模擬的東西,無論是從C#還是在腳本級別。我試着這樣做的PowerShell腳本:使用沒有權限的網絡帳戶,即使,
$username = "domain\user"
$password = ConvertTo-SecureString –String "password" –AsPlainText -Force
$pp = new-object -typename System.Management.Automation.PSCredential -argumentlist $username,$password
start-process powershell -argument "C:\localfolder\CopyFile.ps1" -Credential $pp
它,當我在本地運行在PowerShell控制檯劇本的作品,從web應用程序稱爲然而,當。 。 什麼都沒發生。
雖然App Pool身份設置爲默認的App Pool身份,但我發現如果將身份更改爲具有適當權限的自定義帳戶,它可以工作。
我仍然試圖尋找一個不同的解決方案..我想要一個場景,你可以改變腳本中的任何東西,它仍然會運行。只要不更改應用程序池標識,任何都可以。
我嘗試這些以及:
- http://huddledmasses.org/using-alternate-credentials-with-the-filesystem-in-powershell/
- 在C#中的替代過程中使用運行空間,並使用模仿How do you impersonate an Active Directory user in Powershell?
但它仍然無法正常工作。我一直在拒絕訪問。問題是,是否可以通過模擬PowerShell內的某個人來工作?
「什麼也沒有發生」:嘗試使用調試器或日誌記錄(甚至是進程監視器)來確定它到底有多遠。也許'process.Start'無法執行任何操作? – Richard 2012-07-13 09:01:43
它可以在本地運行。如果我將App Pool Identity設置爲自定義帳戶,它也可以工作。 – user1167132 2012-07-16 01:53:43
什麼是默認值(原來是:失敗)AppPool的身份? – Richard 2012-07-16 06:43:17