Як керувати ПК з мобільного телефону за допомогою PowerShell Remoting

Останнє оновлення: 15/10/2025

  • Віддалений доступ використовує WinRM/WS-Man (HTTP/HTTPS) та дозволяє сеанси «1 до 1», «1 до багатьох» та постійні сеанси з елементами керування безпекою.
  • Enable-PSRemoting налаштовує службу, слухачі та брандмауер; HTTPS вимагає дійсного сертифіката та відповідності CN/SAN.
  • Результати повертаються десеріалізованими; методи викликаються у віддаленому блоці скриптів, а для детального делегування використовуються власні кінцеві точки.
Віддалений доступ PowerShell

Ви, можливо, вже автоматизували багато завдань локально за допомогою PowerShell, але де насправді? Віддалене спілкування PowerShell має значення Це коли ви виконуєте команди на віддалених машинах, кількох чи сотнях, інтерактивно або паралельно. Ця технологія, доступна з Windows PowerShell 2.0 та вдосконалена з версії 3.0, базується на WS-Management (WinRM) та перетворює PowerShell у надійному, масштабованому та безпечному каналі віддаленого керування.

Перш за все, важливо зрозуміти дві ключові ідеї: командлети з -Параметр ComputerName (наприклад, Get-Process або Get-Service) не є довгостроковим шляхом, рекомендованим Microsoft, а PowerShell Remoting не працює як «хакерський трюк». Фактично, забезпечує взаємну автентифікацію, веде журнали аудиту та враховує ваші звичайні дозволи, не зберігаючи облікові дані чи не запускаючи щось магічним чином із суперпривілеями.

Що таке PowerShell Remoting і навіщо його використовувати?

З Віддалений доступ PowerShell може виконувати майже будь-яку команду віддалено які можна запускати в локальному сеансі, від запитів до служб до розгортання конфігурацій, і робити це на сотнях комп'ютерів одночасно. На відміну від командлетів, які приймають -ComputerName (багато з них використовують DCOM/RPC), віддалена взаємодія подорожує через WS-Man (HTTP/HTTPS), який більш зручний для брандмауера, дозволяє паралелізм і переносить роботу на віддалений хост, а не на клієнта.

Це призводить до трьох практичних переваг: кращої продуктивності при масових виконаннях, менше тертя в мережах з обмежувальними правилами та моделлю безпеки, що відповідає Kerberos/HTTPS. Крім того, оскільки віддалена взаємодія не залежить від кожного командлета для реалізації власного віддаленого доступу, Це працює для будь-якого сценарію чи ролі що доступний у пункті призначення.

За замовчуванням, останні сервери Windows постачаються з увімкненою функцією віддаленого доступу; у Windows 10/11 ви активуєте його за допомогою одного командлета. І так, ви можете використовувати альтернативні облікові дані, постійні сеанси, користувацькі кінцеві точки тощо.

Примітка: Віддалене керування не є синонімом відкриття всього. За замовчуванням тільки адміністратори Вони можуть підключатися, і дії виконуються від імені їхньої особи. Якщо вам потрібне детальне делегування, користувацькі кінцеві точки дозволяють надавати доступ лише до найважливіших команд.

Архітектура віддаленого доступу PowerShell

Як це працює всередині: WinRM, WS-Man та порти

PowerShell Remoting працює за клієнт-серверною моделлю. Клієнт надсилає запити WS-Management через HTTP (5985/TCP) або HTTPS (5986/TCP)На цільовому пристрої служба віддаленого керування Windows (WinRM) прослуховує, визначає кінцеву точку (конфігурацію сеансу) та розміщує сеанс PowerShell у фоновому режимі (процес wsmprovhost.exe). повернення серіалізованих результатів клієнту у XML через SOAP.

Під час першого ввімкнення віддаленої взаємодії налаштовуються слухачі, відкривається відповідний виняток брандмауера та створюються конфігурації сеансу. Починаючи з PowerShell 6+, співіснують кілька версій, і Enable-PSRemoting Реєструє кінцеві точки з іменами, що відображають версію (наприклад, PowerShell.7 та PowerShell.7.xy).

Ексклюзивний вміст - натисніть тут  Хто є винахідником алгоритму шифрування AES?

Якщо у вашому середовищі дозволено лише HTTPS, ви можете створити безпечний слухач із сертифікатом, виданим довіреним центром сертифікації (рекомендовано). Як альтернатива, можна використовувати TrustedHosts обмежено та з урахуванням ризиків для робочих груп або комп’ютерів, що не належать до домену.

Зверніть увагу, що Powershell Remoting може співіснувати з командлетами з -ComputerName, але Microsoft просуває WS-Man як стандартний та перспективний спосіб віддаленого адміністрування.

Увімкнення віддаленого доступу PowerShell та корисні параметри

У Windows просто відкрийте PowerShell від імені адміністратора та запустіть Enable-PSRemotingСистема запускає WinRM, налаштовує автозапуск, вмикає слухач і створює відповідні правила брандмауера. На клієнтах із загальнодоступним мережевим профілем ви можете навмисно дозволити це за допомогою -SkipNetworkProfileCheck (а потім підкріпити певними правилами):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

Синтаксис також дозволяє, -Підтвердити y -А якщо для контролю змін. Пам’ятайте: Доступно лише у Windows, і ви повинні запустити консоль з підвищеними правами. Створені правила відрізняються між серверною та клієнтською версіями, особливо в загальнодоступних мережах, де за замовчуванням вони обмежені локальною підмережею, якщо ви не розширите область дії (наприклад, за допомогою Set-NetFirewallRule).

Щоб переглянути вже записані конфігурації сеансу та підтвердити готовність до використання, скористайтеся Get-PSSessionConfigurationЯкщо кінцеві точки PowerShell.x та Workflow відображаються, платформа віддаленої взаємодії працює.

Віддалений сеанс з PowerShell

Режими використання: 1 до 1, 1 до багатьох та постійні сеанси

Коли вам потрібна інтерактивна консоль на одному комп'ютері, зверніться до Enter-PSSessionЗ’явиться запит, і все, що ви виконуєте, буде передано на віддалений хост. Ви можете повторно використовувати облікові дані за допомогою Get-Credential, щоб уникнути постійного повторного введення:

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

Якщо ви шукаєте можливість надсилати команди кільком комп'ютерам одночасно, цей інструмент... Invoke-Command за допомогою блоку скриптів. За замовчуванням запускається до 32 одночасних з’єднань (можна налаштувати за допомогою -ThrottleLimit). Результати повертаються як десеріалізовані об'єкти (без «живих» методів):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

Потрібно викликати метод типу .Stop() або .Start()? Зробіть це. всередині блоку скрипта у віддаленому контексті, а не в локальному десеріалізованому об'єкті, і все. Якщо є еквівалентний командлет (Stop-Service/Start-Service), зазвичай краще використовувати його для ясності.

Щоб уникнути витрат на початок і завершення сеансів під час кожного дзвінка, створіть Постійний PSSession та повторно використовувати його для кількох викликів. Використовуйте New-PSSession для створення з'єднання та Invoke-Command-Session для повторного використання тунелю. Не забудьте закрити його за допомогою Remove-PSSession після завершення.

Серіалізація, обмеження та належні практики

Важлива деталь: під час подорожі об'єкти "+сплющуються" та прибувають як десеріалізовані знімки, з властивостями, але без методів. Це навмисно зроблено та економить трафік, але це означає, що ви не можете використовувати члени, які виконують логіку (наприклад, .Kill()) на локальній копії. Рішення очевидне: викликати ці методи. у віддаленому а якщо вам потрібні лише певні поля, фільтруйте за допомогою Select-Object, щоб надсилати менше даних.

Ексклюзивний вміст - натисніть тут  Що таке «внутрішній чат-бот» і як великі компанії використовують його для навчання ШІ?

У скриптах уникайте Enter-PSSession (призначеного для інтерактивного використання) та використовуйте Invoke-Command з блоками скриптів. Якщо ви передбачаєте кілька викликів або вам потрібно зберегти стан (змінні, імпортовані модулі), використовувати постійні сесії і, якщо можливо, відключити/знову підключити їх за допомогою Disconnect-PSSession/Connect-PSSession у PowerShell 3.0+.

Автентифікація, HTTPS та позадоменні сценарії

У домені власна автентифікація — це Керберос І все працює безперебійно. Коли пристрій не може перевірити ім'я сервера або ви підключаєтеся до IP-адреси чи псевдоніма CNAME, вам потрібен один із цих двох варіантів: 1) Слухач HTTPS із сертифікатом виданий ЦС, якому ви довіряєте, або 2) додайте призначення (ім'я чи IP-адресу) до TrustedHosts та використовувати облікові даніДругий варіант вимикає взаємну автентифікацію для цього хоста, тому зменшує область дії до необхідного мінімуму.

Для налаштування HTTPS-слухача потрібен сертифікат (в ідеалі від вашої PKI або публічного центру сертифікації), встановлений у сховищі команд та прив’язаний до WinRM. Потім у брандмауері відкривається порт 5986/TCP, який використовується з боку клієнта. -ВикористовуйтеSSL у віддалених командлетах. Для автентифікації сертифіката клієнта можна зіставити сертифікат з локальним обліковим записом і підключитися до нього. -Відбиток великого пальця сертифіката (Enter-PSSession не приймає це безпосередньо; спочатку створіть сеанс за допомогою New-PSSession.)

Другий стрибок та делегування повноважень

Знаменитий «подвійний стрибок» з’являється, коли після підключення до сервера вам потрібно, щоб цей сервер мав доступ до третій ресурс від вашого імені (наприклад, спільний ресурс SMB). Існує два підходи до цього: CredSSP та обмежене делегування Kerberos на основі ресурсів.

З CredSSP Ви дозволяєте клієнту та посереднику явно делегувати облікові дані, а також встановлюєте політику (об'єкт групової політики), яка дозволяє делегування певним комп'ютерам. Це швидко налаштувати, але менш безпечно, оскільки облікові дані передаються у відкритому вигляді в зашифрованому тунелі. Завжди обмежуйте джерела та пункти призначення.

Бажаною альтернативою в домені є обмежене делегування Kerberos (обмежене делегування на основі ресурсів) у сучасній Active Directory. Це дозволяє кінцевій точці покладатися на отримання делегування від проміжної точки для певних служб, уникаючи розкриття вашої особистості під час початкового підключення. Потрібні новіші контролери домену та оновлений RSAT.

Користувацькі кінцеві точки (конфігурації сеансу)

Одна з переваг віддаленої взаємодії — це можливість реєструвати точки підключення за допомогою індивідуальні можливості та обмеженняСпочатку ви генеруєте файл за допомогою New-PSSessionConfigurationFile (модулі для попереднього завантаження, видимі функції, псевдоніми, ExecutionPolicy, LanguageMode тощо), а потім реєструєте його за допомогою Register-PSSessionConfiguration, де ви можете встановити Запустити як облікові дані та дозволи (інтерфейс SDDL або графічного інтерфейсу з -ShowSecurityDescriptorUI).

Для безпечного делегування надавайте доступ лише до необхідного за допомогою -VisibleCmdlets/-VisibleFunctions та вимкніть безкоштовні сценарії, якщо це доречно, за допомогою Режим мови Обмежена мова або NoLanguage. Якщо ви залишите FullLanguage, хтось може використати блок скрипта для виклику нерозкритих команд, які в поєднанні з RunAs, це була б діркаРозробіть ці кінцеві точки за допомогою ретельно продуманої структури та задокументуйте їхню область застосування.

Домени, об'єкти групової політики та групове програмне забезпечення

У Active Directory ви можете розгортати Powershell Remoting у великих масштабах за допомогою групової політики: дозволити автоматичне налаштування прослуховувачів WinRM, встановити послугу на автоматичний режимта створіть виняток брандмауера. Пам’ятайте, що об’єкти групової політики змінюють налаштування, але вони не завжди миттєво вмикають службу; іноді потрібно перезапустити або примусово виконати оновлення брандмауера.

Ексклюзивний вміст - натисніть тут  Як мені бути в курсі новин про Маленького Снітча?

У робочих групах (недоменних) налаштуйте віддалену взаємодію за допомогою Enable-PSRemoting, встановіть TrustedHosts на клієнті (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) та використовуйте локальні облікові дані. Для HTTPS можна монтувати самопідписані сертифікати, хоча рекомендується використовувати довірений центр сертифікації та підтвердити ім'я який ви використовуватимете в -ComputerName у сертифікаті (збіг CN/SAN).

Ключові командлети та синтаксис

Жменька командос прикриває 90% щоденних сценаріївЩоб активувати/деактивувати:

Enable-PSRemoting    
Disable-PSRemoting

Інтерактивний сеанс 1 до 1 та вихід:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 до багатьох, з паралелізмом та обліковими даними:

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

Постійні сеанси та повторне використання:

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

Тестування та WinRM корисно:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

Практичні нотатки щодо брандмауера, мережі та портів

Відкрийте 5985/TCP для HTTP та 5986/TCP для HTTPS на цільовому комп’ютері та на будь-який проміжний брандмауерНа клієнтах Windows Enable-PSRemoting створює правила для доменних і приватних профілів; для публічних профілів це обмежується локальною підмережею, якщо не змінити область дії за допомогою Set-NetFirewallRule -RemoteAddress Any (значення, яке ви можете оцінити на основі вашого ризику).

Якщо ви використовуєте інтеграції SOAR/SIEM, які виконують віддалені команди (наприклад, з XSOAR), переконайтеся, що сервер має Розв'язання DNS до хостів, підключення до 5985/5986 та облікові дані з достатніми локальними дозволами. У деяких випадках може знадобитися налаштування автентифікації NTLM/Basic (наприклад, використання локального користувача в Basic з SSL).

Параметри Enable-PSRemoting (зведення про роботу)

-Confirm запитує підтвердження перед виконанням; -Force ігнорує попередження та внесіть необхідні зміни; -SkipNetworkProfileCheck увімкне віддалену взаємодію в загальнодоступних клієнтських мережах (за замовчуванням обмежено локальною підмережею); -WhatIf покаже, що станеться без застосування змін. Крім того, як і будь-який стандартний командлет, він підтримує загальні параметри (-Детальний, -ДіяПомилки тощо).

Пам’ятайте, що опція «Увімкнути» не створює для вас HTTPS-слухачі чи сертифікати; якщо вам потрібне наскрізне шифрування з самого початку та автентифікація на основі сертифікати, налаштуйте HTTPS-слухач і перевірте CN/SAN на відповідність імені, яке ви використовуватимете в -ComputerName.

Корисні команди віддаленого доступу WinRM та PowerShell

Деякі необхідні речі для приліжок На день у день:

winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host 
Enter-PSSession -ComputerName host 
Enable-PSRemoting -SkipNetworkProfileCheck -Force

Під час масштабного керування Windows віддалена взаємодія дозволяє перейти від «комп’ютер-комп’ютер» до декларативного та безпечного підходу. Поєднуючи постійні сеанси, надійну автентифікацію (Kerberos/HTTPS), обмежені кінцеві точки та чіткі трасування для діагностики, ви отримуєте швидкість та контроль без шкоди для безпеки чи аудиту. Якщо ви також стандартизуєте активацію GPO та освоїте спеціальні випадки (TrustedHosts, double hop, сертифікати), ви матимете надійну віддалену платформу для щоденних операцій та реагування на інциденти.

невидиме шкідливе програмне забезпечення
Пов’язана стаття:
Як захистити свій ПК від невидимих ​​шкідливих програм, таких як XWorm та NotDoor