Дистанционно управление с помощта на PowerShell
Има доста методи за работа с отдалечени компютри. Има Windows Management Instrumentation (WMI), широко използван във VBScript. Има различни помощни програми, които позволяват дистанционно управление, като PSExec на Sysinternals. Дори много команди на PowerShell имат параметър ComputerName, който да се изпълнява на отдалечени компютри.
Като цяло има много методи, но всеки от тях има своите недостатъци. Първо, синтаксисът е различен, с което е лесно да се объркате. Второ, някои команди се държат по различен начин в зависимост от това дали се изпълняват локално или дистанционно. И накрая, комуникацията може да изисква отваряне на допълнителни портове на защитната стена, което не е добре от гледна точка на сигурността.
Отдалечаване на PowerShell решава повечето от описаните проблеми. Той се основава на внедряването от Microsoft на протокола за уеб услуги за управление (WS-Management) и използва услугата за отдалечено управление на Windows (WinRM) за комуникация. Комуникацията между компютрите се осъществява чрез HTTP (по подразбиране) или HTTPS. Целият трафик между два компютъра е криптиран на ниво протокол (освен когато се използва SSL). Поддържат се няколко метода за удостоверяване, включително NTLM и Kerberos.
За разлика от помощните програми, които използват различни интерфейси за програмиране, PS Remoting работи по следния начин: командите, въведени на локалния компютър, се предават на отдалечения компютър и се изпълняват там, след което резултатът се изпраща обратно. Тъй като всички команди се изпълняват локално, няма нужда да се притеснявате за съвместимостта. Също така, PS Remoting се нуждае само от един отворен порт на защитната стена, за да работи.
Има няколко начина за управление с помощта на PowerShell Remoting.
Едно към едно управление
Най-лесният начин за дистанционно управление е чрез интерактивно отваряне на отдалечена сесия и извършване на необходимите действия в нея. Например, нека отворим сесия на компютъра SRV4 и рестартираме услугата за печат върху него:
Enter-PSSession -ComputerName SRV4
Restart-Service -Name спулер
Нека да видим състоянието на услугата и да затворим отдалечената сесия:
Get-Service -Name спулер
Изход-PSSession
Интерактивната работа е подходяща за решаване на прости задачи за отдалечено администриране. Ако трябва да автоматизирате процеса, тогава е по-добре да използвате командлета Invoke-Command. Ето как можете да направите същото действие с него:
Invoke-Command -ScriptBlock -ComputerName SRV4
Тази команда ще отвори отдалечена сесия на SRV4, ще изпълни командния блок, посочен в параметъра -ScriptBlock, и ще затвори сесията. И за да стартирате заданието във фонов режим, можете допълнително да посочите параметъра -AsJob .
Имайте предвид, че когато работи във фонов режим, PowerShell не връща резултат. За да го получите, ще трябва да използвате командлета Receive-Job .
За да изпълни не няколко команди, а скрипт, Invoke-Command има параметър –FilePath, който може да се използва вместо –ScriptBlock за дефиниране на файл със скрипт. Например създадох скрипт, който изброява спрените услуги и го стартирах на отдалечена машина SRV4:
Invoke-Command -FilePath. \ Script.ps1 -ComputerName SRV4

Управление едно към много
Доста често става необходимо паралелно да се изпълнява една задача на няколко компютъра. Това може да се направи доста лесно, като се използва същата команда за извикване. Например имената на компютрите могат да бъдат просто изброени, разделени със запетаи:
Invoke-Command -ScriptBlock -ComputerName SRV4, SRV5
Място в променлива:
$ сървъри = @ (″ SRV1 ″, ″ SRV2 ″, ″ SRV3 ″)
Invoke-Command -ScriptBlock -ComputerName $ сървъри
Или вземете от файл:
Invoke-Command -ScriptBlock -ComputerName`
(Get-Content. \ Servers.txt)

Забележка: Invoke-Command има параметър ThrottleLimit, който ограничава максималния брой компютри, които могат да бъдат контролирани едновременно. По подразбиране този параметър е 32. Ако е необходимо, можете да го промените, но имайте предвид, че увеличаването на този параметър ще увеличи натоварването на процесора и паметта на вашия компютър, така че тази операция трябва да се извършва с голямо внимание.