2016-10-11 8 views
0

У меня есть сценарий powershell, этот запуск при входе пользователя в систему на одной виртуальной машине (00000281): Get-Content C: /sample.txt -TotalCount 1) | Set-Content C: \ sample.txtвыполнить сценарий powerhsell на multip vm

Чтобы выполнить сценарий автоматически, я создал файл .cmd и поместил его в следующую папку: C: \ Users \ vs_domadmin \ AppData \ Roaming \ Microsoft \ Windows \ Start Меню \ Программы \ Ввод в эксплуатацию

Вышеуказанная VM (00000281) находится в моем кластере Infra VM, который содержит еще четыре других виртуальных сервера Vm. У меня есть в общей сложности четыре сервера, которые я хотел бы, чтобы этот скрипт также работал. 00000281, 00000282, 00000283, 00000284

Мой сценарий runniing на данный момент только на 00000281. Вот трюк: мне нужен этот скрипт из 00000281 для выполнения и на остальной части инфра серверов 00000282, 00000283, 00000284, зная, что скрипт будет храниться только на моем первом инфракрасном сервере 000002821. Я считаю, что предоставление сценария некоторым условиям и определение пути других 3vms в VM (00000281) должно сделать работу правильной? Как очень новый для powershell кто-то может помочь?

ответ

1

В.М. 00000282, 00000283, 00000284 считается удаленной машины ВПР текущего пользователя в виртуальной машине 00000281.

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

Это делается путем предоставления каждой машины, чтобы запустить Powershell службу удаленного WinRM

Для шаг за шагом детали:

How to Run PowerShell Commands on Remote Computers

Измените сценарий в виртуальной машине 00000281, добавьте в последнюю строку :

Invoke-Command -ComputerName 00000282, 00000283, 00000284 -FilePath path_to_script_file.ps1 

Таким образом, вы запускаете один и тот же сценарий на всех машинах.

Пользователь должен иметь разрешение на этих машинах.

+0

Этот ответ работает нормально, если на всех серверах установлен WinRM. Предыдущее решение также работает, без необходимости установки WinRm. Однако я предпочитаю использовать командное решение, так как это понятно, более короткие коды и эффективны. спасибо – Manu2287

0

Решение определены:

$ File = "C: \ sample.txt" Get-Content $ File -TotalCount 1 | Set-Content $ Файл "00000282", "00000283", "00000284" | % { $ FileUnc = "\ $ ($ _) \ $ ($ File.Replace (':', '$'))" Get-Content $ FileUnc -TotalCount 1 | Set-Content $ FileUnc }