簡體   English   中英

Visual Studio 2017 C#啟動Powershell腳本

[英]Visual Studio 2017 C# launching powershell script

希望這是向本網站提出新要求的合適地方:)

我在Visual Studio中創建了一個用於創建新用戶的GUI。 然后,部分代碼調用了我一直用於創建用戶的Powershell腳本。

因此,GUI都可以正常工作,我可以將用戶添加到它創建的CSV文件中,然后啟動Powershell腳本。

我得到的問題是Powershell腳本的一部分加載了Exchange 2007管理單元。 出於某種原因,通過我創建的GUI運行腳本時,總是會出現一條錯誤消息,指出無法找到插件。

因此,基本上,用於啟動Powershell的代碼如下。 現在我根本不是編碼人員,所以我可能會以錯誤的方式進行操作,可能有點混亂:)

Process p = new Process();

p.OutputDataReceived += new DataReceivedEventHandler(OutputHandler);

// Redirect the output stream of the child process.
p.StartInfo.CreateNoWindow = false; (false for testing)
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = false; //(false for testing)
p.StartInfo.RedirectStandardOutput = false; //(false for testing)
p.StartInfo.RedirectStandardError = false; //(false for testing)
p.StartInfo.LoadUserProfile = true;
p.StartInfo.FileName = "This points to a file on a network share" @"\\server\folder\file";

p.Start();
p.BeginOutputReadLine();

上面的操作在單擊按鈕后發生,一旦我一切正常,它就會輸出到GUI中的文本框。 但是現在我禁用了這方面的功能,以便可以看到Powershell中的錯誤。

因此,Powershell中的錯誤消息如下

此計算機上未安裝'Microsoft.exchange.management.powershell.admin'

但是如果我在沒有GUI的情況下手動運行腳本,它仍然可以正常工作。 就像GUI在封閉的環境中啟動它一樣,該環境無法訪問運行它的計算機。 我很可能缺少一些簡單的東西,因為我真的不知道創建c#應用程序。

好的,我想我已經解決了問題。

我應該對啟動Powershell腳本的工作進行更好的解釋。 基本上,我使用上面的代碼來啟動.bat文件,並且無論運行該bat文件時出於何種原因,都無法正常運行,並且會收到上述錯誤。

因此,我使用了一個小程序將bat文件轉換為exe並將其設置為始終以admin身份運行。 這樣就解決了問題,現在腳本可以正確運行。

不知道為什么,但是啟動bat文件時,它無權訪問本地用戶配置文件,因此無法加載Powershell交換管理單元,因為其詳細信息存儲在本地用戶注冊表中。

因此,解決方案是將GUI為Powershell腳本啟動的bat文件更改為EXE文件。 不知道為什么會這樣,但是它能起作用:)

謝謝邁克爾·史密斯

暫無
暫無

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

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