Назад | Перейти на главную страницу

Термин Get-ClusterResource не распознается как имя командлета, функции, файла сценария или работающей программы.

У меня есть сценарий PowerShell, который я пытаюсь выполнить по SSH. Команда отлично работает, когда я запускаю ее из командной строки сервера 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 -file "C: \ Scripts \ VMShutDown.ps1"

Однако, когда я запускаю это с удаленного компьютера (Ubuntu 12.04). Я получаю следующую ошибку:

Get-ClusterResource: термин Get-ClusterResource не распознается как

имя командлета, функции, файла сценария или работающей программы. Проверить

написание имени, или, если путь был включен, убедитесь, что путь

исправьте и попробуйте еще раз.

Есть мысли о том, что я делаю неправильно?

Операционные системы:

Windows Server 2012 Standard - 64-разрядная операционная система

Ubuntu 12.04.4 LTS

Проблема:

Remote Power Shell выполняет 32-битную Power Shell даже на 64-битной машине. Это вызывает проблемы с загрузкой только установленных модулей, которые могут быть выполнены с использованием 64-битного процесса (например, отказоустойчивой кластеризации).

Решение: создать 64-битную оболочку и процесс выполнения.

Я создал файл .bat, который запускал сценарий ps1 из командной строки:

powershell.exe -file "C:\{path}\{first-file}.ps1"

Внутри этого скрипта вы должны создать псевдоним, указывающий на собственный 64-битный исполняемый файл для PowerShell:

Set-Alias ps64 "$env:windir\sysnative\WindowsPowerShell\v1.0\powershell.exe"

Как только вы это сделаете, вы можете запустить другой файл из этого файла:

ps64 {C:\{path}\{second-file}.ps1}

Здесь он загрузит все необходимые модули и выполнит ваш 64-битный скрипт.

После этого я смог выполнить свою команду PS из Linux, и это сработало как шарм.

Ссылка на решение:

http://karlprosser.com/coder/2011/11/04/calling-powershell-64bit-from-32bit-and-visa-versa/