術語“Get-ClusterResource”未被辨識為 cmdlet、函式、腳本文件或可執行程序的名稱
我有一個試圖通過 SSH 執行的 powershell 腳本。當我從伺服器的 powershell 命令行執行該命令時,該命令執行良好。
這是我的 Powershell 腳本:
ImportSystemModules $vms = Get-ClusterResource | Where-Object{$_.ResourceType -like "Virtual Machine"} foreach ($vm in $vms) { if ($vm -eq "Virtual Machine server-name") { Echo "Stop $vm" Stop-ClusterGroup $vm.OwnerGroup } }
這是我正在執行的命令:
C:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -文件“C:\Scripts\VMShutDown.ps1”
但是,當我從遠端機器(Ubuntu 12.04)執行它時。我收到以下錯誤:
Get-ClusterResource:術語“Get-ClusterResource”未被辨識為
cmdlet、函式、腳本文件或可執行程序的名稱。檢查
名稱的拼寫,或者如果包含路徑,請驗證路徑是否
正確並重試。
有什麼想法我可能做錯了嗎?
作業系統:
Windows Server 2012 標準版 - 64 位作業系統
Ubuntu 12.04.4 LTS
問題:
遠端電源外殼執行 32 位電源外殼,即使在 64 位機器上也是如此。這會導致載入僅使用 64 位程序(例如故障轉移群集)安裝並能夠執行的模組時出現問題
解決方案:創建一個 64 位的包裝器和執行過程。
我創建了一個從命令行執行 ps1 腳本的 .bat 文件:
powershell.exe -file "C:\{path}\{first-file}.ps1"
在此腳本中,您必須創建一個別名來指向 powershell 的本機 64 位執行檔:
Set-Alias ps64 "$env:windir\sysnative\WindowsPowerShell\v1.0\powershell.exe"
完成此操作後,您可以從該文件中執行另一個文件:
ps64 {C:\{path}\{second-file}.ps1}
在這裡,它將載入所有正確的模組,並執行您的 64 位腳本。
之後,我就可以在 Linux 上執行我的 PS 命令了,而且效果非常好。
參考解決方案:
http://karlprosser.com/coder/2011/11/04/calling-powershell-64bit-from-32bit-and-visa-versa/