Термин 'Получ-ClusterResource' не распознан как название cmdlet, функции, файла сценария или действующей программы

У меня есть 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 - файл "C:\Scripts\VMShutDown.ps1"

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

Доберитесь-ClusterResource: термин 'Получ-ClusterResource' не распознан как

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

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

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

Какие-либо мысли тому, что я мог бы делать неправильно?

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

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

Ubuntu 12.04.4 LTS

0
задан 1 August 2014 в 22:19
1 ответ

Проблема:

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

Solution: Создайте 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/

0
ответ дан 5 December 2019 в 13:36

Теги

Похожие вопросы