Ssh

術語“Get-ClusterResource”未被辨識為 cmdlet、函式、腳本文件或可執行程序的名稱

  • August 4, 2014

我有一個試圖通過 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/

引用自:https://serverfault.com/questions/617296