Geek School: Научете се да използвате Remoting в PowerShell

Съдържание:

Geek School: Научете се да използвате Remoting в PowerShell
Geek School: Научете се да използвате Remoting в PowerShell

Видео: Geek School: Научете се да използвате Remoting в PowerShell

Видео: Geek School: Научете се да използвате Remoting в PowerShell
Видео: Windows 10 Docker Desktop for Windows: Explained - YouTube 2024, Може
Anonim
Една от най-добрите функции на PowerShell предлага е възможността за дистанционно управление на сървърите ви. Тя дори ви позволява да управлявате един куп от тях едновременно.
Една от най-добрите функции на PowerShell предлага е възможността за дистанционно управление на сървърите ви. Тя дори ви позволява да управлявате един куп от тях едновременно.

Не забравяйте да прочетете предишните статии в серията:

  • Научете как да автоматизирате Windows с PowerShell
  • Научете как да използвате Cmdlets в PowerShell
  • Учене как да използвате обекти в PowerShell
  • Форматиране на обучение, филтриране и сравнение в PowerShell

И останете настроени за останалата част от серията през цялата седмица.

Какво е Remoting?

Груповото управление на сървърите ви може да е досадно и ако сте се наложили да промените конфигурацията на IIS на 50 уеб сървъри преди, ще разберете какво имам предвид. Това са видовете ситуации, при които PowerShell Remoting и езиковите скриптови способности могат да дойдат на помощ. Използвайки HTTP или по-защитения HTTPS, PowerShell Remoting ви позволява да изпращате команди към отдалечена машина във вашата мрежа. След това машината изпълнява командите и ви изпраща изхода, който на свой ред се показва на екрана ви.

Да се технически

В основата на PowerShell Remoting се крие една услуга на Windows, отдалеченото управление на Windows или услугата WinRM, както стана известно. С помощта на WinRM можете да настроите една или повече конфигурации на сесии (известни също като крайни точки), които в основата си са файлове, съдържащи информация за опита, който искате да предоставите на лицето, свързващо се с вашия отдалечен потребителски модел PowerShell. По-конкретно, можете да използвате конфигурационни файлове на сесиите, за да определите кой може и кой не може да се свърже с инстанцията, какви команди и скриптове могат да изпълняват, както и какъв контекст на сигурността сесия трябва да се изпълнява. С помощта на услугата WinRM сте създали и "слушатели", които слушат за входящи заявки за PowerShell. Тези "слушатели" могат да бъдат HTTP или HTTPS и могат да бъдат обвързани с един IP адрес на вашата машина. Когато отваряте PowerShell връзка към друго устройство (технически това се прави с протокола WS-MAN, който се основава на HTTP), връзката се свързва с един от тези "слушатели". След това "слушателите" отговарят за изпращането на трафика към приложението, свързано с подходящия конфигурационен файл на сесията; (обикновено PowerShell, но можете да имате и други хостинг приложения, ако искате), след това изпълнява командата и подава резултатите обратно през "слушателя" в мрежата и обратно на вашата машина.

Покажи ми как

Първото нещо, което трябва да направите, е да активирате пренасочването към машината, с която искате да се свържете. Това може да стане, като изпълните следното:

Enable-PSRemoting

След това ще трябва да отговорите с "да" на всички указания. Когато стартирате Enable-PSRemoting, направени са няколко промени в компютъра ви:
След това ще трябва да отговорите с "да" на всички указания. Когато стартирате Enable-PSRemoting, направени са няколко промени в компютъра ви:
  • Услугата WinRM стартира.
  • Услугата WinRM се променя от ръчен режим на стартиране до автоматичен.
  • Той създава HTTP слушател, който е свързан с всичките ви мрежови карти.
  • Той също така създава изключение за входящата защитна стена за протокола WS-MAN.
  • Създават се някои конфигурации на сесия по подразбиране

Ако работите с Windows 7 и местоположението на вашата мрежова карта е настроено на Public, активирането на PowerShell Remoting ще се провали. За да го коригирате, трябва само да преминете към местоположението на мрежата Начало или Работа. Друга възможност е да пропуснете проверката на мрежата, като използвате следното:

Enable-PSRemoting –SkipNetworkProfileCheck

Препоръчваме обаче по-скоро да промените местоположението на мрежата си.
Препоръчваме обаче по-скоро да промените местоположението на мрежата си.

Има два начина за свързване с друга машина, използвайки PowerShell. Има един към един метод, който е много подобен на използването на SSH, а след това има един от многото методи.

Използване на сесия PowerShell

Първият начин за свързване към отдалечена машина чрез PowerShell използва нещо, наречено PowerShell Session. Просто поставете сесия ви позволява да стартирате команди на отдалечената машина по интерактивен начин, много по същия начин, колкото бихте направили и на вашата собствена машина. За да отворите сесия, трябва само да въведете следното:

Enter-PSSession –ComputerName “Darlah”

В подканата ще се получи префикс, който означава машината, на която работите с ритмите.
В подканата ще се получи префикс, който означава машината, на която работите с ритмите.
Оттук можете наистина да третирате подкана, сякаш се намирате на отдалечената машина. Например, ако искате да видите всички файлове на C: drive, можете да направите прости:
Оттук можете наистина да третирате подкана, сякаш се намирате на отдалечената машина. Например, ако искате да видите всички файлове на C: drive, можете да направите прости:

Get-ChildItem –Path C:

Ако идвате от фона на Линукс, можете да помислите за използването на този метод за предаване като алтернатива на SSH за PowerShell.
Ако идвате от фона на Линукс, можете да помислите за използването на този метод за предаване като алтернатива на SSH за PowerShell.

Използване на Invoke-Command

Вторият начин да използвате PowerShell на отдалечена машина е чрез използване на Invoke-Command. Предимството да използвате Invoke-Command идва от факта, че можете да изпълнявате същата команда на няколко машини едновременно. Както можете да си представите, това е особено полезно, когато искате да направите нещо като събиране на регистрационни файлове от сървърите. Invoke-Command следва следния синтаксис:

Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}

Тъй като командата се изпълнява успоредно във всички машини, ще ви е нужен начин да видите от кой компютър произхожда даден резултат. Можете да направите това, като прегледате собствеността PSComputerName.
Тъй като командата се изпълнява успоредно във всички машини, ще ви е нужен начин да видите от кой компютър произхожда даден резултат. Можете да направите това, като прегледате собствеността PSComputerName.
Когато използвате Invoke-Command, вече нямате предметите, които можете да очаквате в тръбопровода. Виждате ли, че за да може PowerShell да получи информацията от отдалечената машина обратно към машината ви, те се нуждаят от някакъв начин да представят предметите, които командата сте изкарали на отдалечената машина. Тези дни изглежда, че избраният начин за представяне на йерархична структура на данните е да използвате XML, което означава, че когато издавате команда, използвайки Invoke-Command, резултатите се обобщават първо в XML, преди да бъдат изпратени обратно на вашата машина.След като се върнат в машината ви, те се десериализират обратно в обект; тук е, че когато те са десериализирани, всички методи, с изключение на метода ToString (), които обектът са премахнали от него.
Когато използвате Invoke-Command, вече нямате предметите, които можете да очаквате в тръбопровода. Виждате ли, че за да може PowerShell да получи информацията от отдалечената машина обратно към машината ви, те се нуждаят от някакъв начин да представят предметите, които командата сте изкарали на отдалечената машина. Тези дни изглежда, че избраният начин за представяне на йерархична структура на данните е да използвате XML, което означава, че когато издавате команда, използвайки Invoke-Command, резултатите се обобщават първо в XML, преди да бъдат изпратени обратно на вашата машина.След като се върнат в машината ви, те се десериализират обратно в обект; тук е, че когато те са десериализирани, всички методи, с изключение на метода ToString (), които обектът са премахнали от него.
Image
Image

Забележка: Има някои изключения от това правило, например повечето примитивни типове като цели числа могат да бъдат десериализирани с включените методи. Съществува и процес, наречен Рехидратация, при който някои методи могат да бъдат добавени обратно към десериализирани обекти. Просто бъдете внимателни и запомнете, че Get-Member е ваш приятел.

Домашна работа

Прочетете Тайните на PowerShell Remoting ebook от Дон Джоунс.

Препоръчано: