Запустите Get-ClusterGroup на удаленном сервере, используя центральный сервер - PullRequest
0 голосов
/ 24 февраля 2019

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

Enter-pssession -computername (ip-address) -credential (domain user)

И он предлагает мне ввести пароль, затем я получаю сеанс и выполню

get-clustergroup

Хорошо, пока все в порядке.

Теперь я хотел сделать это полностью автоматизированным путем преобразования в скрипт PowerShell

Следующие команды хорошо работают, когда я его запускаюв Powershell ISE и получает вывод get-clustergroup

$password = ConvertTo-SecureString "password" -AsPlainText -Force
$user = "domain\user"
$cred = New-Object System.Management.Automation.PSCredential ($user,$password)

Enter-PSSession -ComputerName IP.Add.RE.SS -Credential $cred

get-clustergroup 

, но когда я сохраняю сценарий about и запускаюсь с PowerShell, я получаю следующую ошибку:

get-clustergroup: служба кластера не работает

get-clustergroup: the cluster service is not running

Я хочу автоматизировать процесс, написав скрипт для получения get-clustergroup выходных данных четырех серверов кластера.

Я новичок в сценариях PowerShell.как я могу сохранить вывод?

1 Ответ

0 голосов
/ 25 февраля 2019

Вместо создания сеанса на другом сервере вы можете запустить следующую команду, которая запустит команду на удаленном компьютере и вернет вывод в вашу консоль:

Invoke-Command -ComputerName <IPAddress> -ScriptBlock { Get-ClusterGroup } -Credential $cred

Вы можете сохранить этот вывод впеременная, если вы хотите для последующего извлечения.

Поскольку -ComputerName может принимать объект массива, вы можете изменить свою команду, чтобы включить все четыре ваших сервера.Ниже показано, как использовать все имена ваших компьютеров и сохранять выходные данные в переменной $Output:

$Output = Invoke-Command -ComputerName "Server1","Server2","Server3","Server4" `
         -ScriptBlock {Get-ClusterGroup} -Credential $cred
$Output

Имена компьютеров также могут храниться в переменной в виде массива.Затем эту переменную можно использовать в параметре -ComputerName:

$Computers = "Server1","Server2","Server3","Server4"
Invoke-Command -ComputerName $Computers -ScriptBlock { Get-ClusterGroup } -Credential $cred

См. Invoke-Command для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...