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