Термин "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

1 ответ

Решение

Проблема:

Удаленная оболочка питания выполняет 32-разрядную оболочку питания даже на 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/

Другие вопросы по тегам