簡體   English   中英

C#調用Powershell腳本失敗

[英]C# Calling Powershell script fails

我從C#應用程序調用PS腳本時遇到一種奇怪的情況:我創建了一個簡單的應用程序,該應用程序應從Azure環境中檢索虛擬機的狀態(運行,停止,釋放)。 因此,我嘗試了幾件事,最簡單的一件事是執行PowerShell腳本,獲取VM的狀態並在我的應用程序中使用它,以便我可以使用此信息來做一些事情。 在運行PS腳本之前,我進行了一次查找替換,以便C#解析用戶名和密碼以登錄Azure,這樣它就不會存儲在我的ps1文件中。

當我在開發計算機(Win10和VS2017社區)上嘗試此方法時,它都可以正常運行(C#調用PowerShell並獲取輸出)。 該腳本已執行,我可以根據需要使用該信息。 但是,當我在服務器(Win2012)上嘗試此操作時,它告訴我Login-Azurermaccount和get-azurermvm無法識別為cmdlet的名稱。 當我嘗試通過運行powershell -file'filename.ps1'從命令行運行完全相同的腳本時,它是否應該運行?

有人對此可能有相同的問題有解釋嗎?

在dev.machine和server上是PS:5.1的相同版本

Win10 Dev框上的成功表明您已安裝/加載了Azure模塊,並且您已經重新登錄Azure。

必須在主機上(直接或代理)安裝/加載Azure模塊,並且必須登錄到Azure才能使用它們並訪問Azure數據。

根據自己的配置文件在本地計算機上運行它,發現它可能表明模塊在運行時已自動加載。 在本地使用-noprofile嘗試PowerShell.exe,您可能會得到不同的結果(服務器上的錯誤)。

至於使其在兩種環境中都能正常工作,我建議您將代碼放入腳本中以顯式添加所需的模塊(假設您已在服務器上安裝了SDK)。

將其添加到模塊頂部作為第一行。 在執行此操作之前,請確認文件在兩台計算機上都存在,以表明文件的安裝方式相同。

導入模塊“ c:\\ ProgramFiles(x86)\\ Microsoft SDKs \\ Azure \\ PowerShell \\ AzureRM.psd1”

如果尚未安裝在服務器上,請參見以下安裝說明。

https://docs.microsoft.com/zh-CN/powershell/azure/other-install?view=azurermps-5.1.1

暫無
暫無

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

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