- Далечинското работење користи WinRM/WS-Man (HTTP/HTTPS) и овозможува сесии 1-на-1, 1-на-многу и постојани сесии со безбедносни контроли.
- Enable-PSRemoting ги конфигурира услугата, слушателите и заштитниот ѕид; HTTPS бара важечки сертификат и совпаѓање на CN/SAN.
- Резултатите се враќаат десеријализирани; методите се повикуваат во рамките на оддалечениот скрипт-блок, а прилагодени крајни точки се користат за фино делегирање.
Можеби веќе локално автоматизирате многу задачи со PowerShell, но каде всушност? PowerShell Remoting прави разлика Тоа е кога извршувате команди на оддалечени машини, без разлика дали се неколку или стотици, интерактивно или паралелно. Оваа технологија, достапна од Windows PowerShell 2.0 и подобрена од 3.0, се базира на WS-Management (WinRM) и конвертира PowerShell во робустен, скалабилен и безбеден канал за далечинско управување.
Прво на сите, важно е да се разберат две клучни идеи: cmdlets со -ПараметарИменаКомпјутерот (на пр., Get-Process или Get-Service) не се долгорочната патека што ја препорачува Microsoft, а PowerShell Remoting не функционира како „хак“. Всушност, спроведува меѓусебна автентикација, ги ревидира логовите и ги почитува вашите вообичаени дозволи, без да складира акредитиви или магично да извршува нешто со супер привилегии.
Што е PowerShell Remoting и зошто да се користи?
со Далечинско управување на PowerShell можеш изврши речиси секоја команда од далечина што би можеле да го стартувате во локална сесија, од барања за услуги до распоредување конфигурации, и да го правите тоа на стотици компјутери одеднаш. За разлика од cmdlet-ите што прифаќаат -ComputerName (многумина користат DCOM/RPC), Remoting патува преку WS-Man (HTTP/HTTPS), кој е попријателски настроен кон заштитен ѕид, овозможува паралелизам и ја префрла работата на оддалечениот домаќин, а не на клиентот.
Ова се преведува во три практични предности: подобри перформанси при масовно извршување, помалку триење во мрежите со рестриктивни правила и безбедносен модел конзистентен со Kerberos/HTTPS. Понатаму, со тоа што не зависи од секој cmdlet за имплементација на сопствен далечински управувач, Remoting Работи за кое било сценарио или улога што е достапно на дестинацијата.
Стандардно, поновите Windows сервери доаѓаат со овозможено далечинско управување; во Windows 10/11 го активираш со еден cmdlet. И да, можете да користите алтернативни акредитиви, постојани сесии, прилагодени крајни точки и друго.
Забелешка: Далечинското користење не е синоним за отворање на сè. Стандардно, само администраторите Тие можат да се поврзат, а дејствата се извршуваат под нивниот идентитет. Доколку ви е потребна детална делегација, прилагодените крајни точки ви овозможуваат да ги изложите само основните команди.

Како работи внатре: WinRM, WS-Man и порти
PowerShell Remoting работи во клиент-сервер модел. Клиентот испраќа барања за WS-Management преку HTTP (5985/TCP) или HTTPS (5986/TCP)На целта, услугата за далечинско управување на Windows (WinRM) слуша, ја решава крајната точка (конфигурација на сесијата) и ја хостира PowerShell сесијата во позадина (процес wsmprovhost.exe), враќање на серијализирани резултати до клиентот во XML преку SOAP.
Првиот пат кога ќе го овозможите Remoting, се конфигурираат слушателите, се отвора соодветниот исклучок за firewall и се креираат конфигурации на сесии. Од PowerShell 6+, коегзистираат повеќе изданија и Enable-PSRemoting Регистрира крајни точки со имиња што ја одразуваат верзијата (на пример, PowerShell.7 и PowerShell.7.xy).
Ако дозволувате само HTTPS во вашата околина, можете да креирате безбеден слушател со сертификат издаден од доверлив CA (препорачано). Алтернативно, друга алтернатива е да се користи TrustedHosts на ограничен начин, свесен за ризикот, за сценарија на работни групи или компјутери кои не се од доменот.
Забележете дека Powershell Remoting може да коегзистира со cmdlets со -ComputerName, но Мајкрософт го промовира WS-Man како стандарден и идно-отпорен начин за далечинска администрација.
Овозможување на PowerShell Remoting и корисни параметри
На Windows, само отворете PowerShell како администратор и стартувајте Enable-PSRemotingСистемот го стартува WinRM, го конфигурира автоматското стартување, го овозможува слушателот и ги креира соодветните правила за заштитен ѕид. Кај клиенти со јавен мрежен профил, можете намерно да го дозволите ова со -Проверка на профилот на SkipNetwork (а потоа поткрепете со специфични правила):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Синтаксата исто така дозволува, -Потврди y -Што ако за контрола на промените. Запомнете: Достапно е само на Windows, и мора да ја стартувате конзолата со покачена ознака. Создадените правила се разликуваат помеѓу изданијата на серверот и клиентот, особено на јавните мрежи, каде што по дифолт се ограничени на локалната подмрежа освен ако не го проширите опсегот (на пример, со Set-NetFirewallRule).
За да ги наведете веќе снимените конфигурации на сесиите и да потврдите дека сè е подготвено, користете Get-PSSessionConfigurationАко се појават крајните точки на PowerShell.x и Workflow, рамката за далечинско работење е оперативна.

Режими на употреба: 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()? Направете го тоа. внатре во скриптниот блок во далечински контекст, не локалниот десеријализиран објект, и тоа е тоа. Ако постои еквивалентен cmdlet (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 и сценарија надвор од доменот
Во домен, нативната автентикација е Керберос И сè тече. Кога уредот не може да го потврди името на серверот или се поврзувате со CNAME IP адреса или псевдоним, ви е потребна една од овие две опции: 1) Слушател HTTPS со сертификат издадено од CA на кое му верувате, или 2) додадете ја дестинацијата (име или IP адреса) во TrustedHosts и користи акредитивиВтората опција ја оневозможува меѓусебната автентикација за тој домаќин, така што го намалува опсегот на потребниот минимум.
Поставувањето на HTTPS слушател бара сертификат (идеално од вашиот PKI или јавен CA), инсталиран во team store и поврзан со WinRM. Потоа, портата 5986/TCP се отвора во заштитниот ѕид и, од клиентот, се користи. -Користи SSL во оддалечени cmdlets. За автентикација на клиентски сертификат, можете да мапирате сертификат на локална сметка и да се поврзете со -Отпечаток од палец на сертификат (Enter-PSSession не го прифаќа ова директно; прво креирајте ја сесијата со New-PSSession.)
Втор скок и делегирање на акредитиви
Познатиот „двоен скок“ се појавува кога, по поврзувањето со сервер, ви е потребен тој сервер за пристап до трет ресурс во ваше име (на пр., SMB споделување). Постојат два пристапа за да се овозможи ова: CredSSP и делегирање на Kerberos со ограничени ресурси.
со CredSSP Им овозможувате на клиентот и посредникот експлицитно да делегираат акредитиви и поставувате политика (GPO) за да дозволите делегирање на одредени компјутери. Конфигурирањето е брзо, но помалку безбедно бидејќи акредитивите патуваат како јасен текст во рамките на енкриптираниот тунел. Секогаш ограничувајте ги изворите и дестинациите.
Преферираната алтернатива во доменот е ограничено делегирање на Kerberos (ограничено делегирање базирано на ресурси) во современиот AD. Ова ѝ овозможува на крајната точка да се потпре на приемот на делегирање од средната точка за специфични услуги, избегнувајќи го откривањето на вашиот идентитет при почетната врска. Потребни се неодамнешни контролери на домен и ажуриран RSAT.
Прилагодени крајни точки (конфигурации на сесии)
Еден од бисерите на далечинското работење е можноста за регистрирање на точките за поврзување со прилагодени способности и ограничувањаПрво генерирате датотека со New-PSSessionConfigurationFile (модули за претходно вчитување, видливи функции, алијаси, ExecutionPolicy, LanguageMode, итн.), а потоа ја регистрирате со Register-PSSessionConfiguration, каде што можете да поставите Извршикакоакредитација и дозволи (SDDL или GUI интерфејс со -ShowSecurityDescriptorUI).
За безбедно делегирање, изложете само она што е потребно со -VisibleCmdlets/-VisibleFunctions и оневозможете го слободното скриптирање доколку е соодветно со Јазичен режим Ограничен јазик или NoLanguage. Ако го напуштите FullLanguage, некој би можел да користи скриптен блок за да повика неекспонирани команди, кои, во комбинација со RunAs, тоа би било дупкаДизајнирајте ги овие крајни точки со ситна чешел и документирајте го нивниот опсег.
Домени, GPO и Groupware
Во AD можете да го распоредите Powershell Remoting на големо со GPO: овозможете автоматска конфигурација на WinRM слушателите, поставете ја услугата на Автоматскои креирајте исклучок за заштитен ѕид. Запомнете дека GPO-ата ги менуваат поставките, но не секогаш ја вклучуваат услугата веднаш; понекогаш треба да го рестартирате или да наметнете gpupdate.
Во работни групи (недоменски), конфигурирајте го Remoting со Enable-PSRemoting, поставете TrustedHosts на клиентот (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) и користете локални акредитиви. За HTTPS, можете да монтирате самопотпишани сертификати, иако се препорачува да користите доверлив CA и потврди го името што ќе го користите во -ComputerName во сертификатот (совпаѓање со CN/SAN).
Клучни cmdlets и синтакса
Неколку командоси го покриваат 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).
Параметри за овозможување на оддалеченост на PS (оперативен преглед)
-Потврда бара потврда пред извршување; -Присилно ги игнорира предупредувањата и направете ги потребните промени; -SkipNetworkProfileCheck овозможува далечинско користење на јавни клиентски мрежи (ограничено по дифолт на локалната подмрежа); -WhatIf ви покажува што би се случило без примена на промените. Дополнително, како и секој стандарден cmdlet, поддржува заеднички параметри (-Детално, -Акција на грешка, итн.).
Запомнете дека „Овозможи“ не креира HTTPS слушатели или сертификати за вас; ако ви треба енкрипција од крај до крај од самиот почеток и автентикација врз основа на сертификати, конфигурирајте го HTTPS слушателот и валидирајте го CN/SAN според името што ќе го користите во -Име на компјутер.
Корисни команди за далечинско управување со 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 на големо, Remoting ви овозможува да преминете од „компјутер-до-компјутер“ на декларативен и безбеден пристап. Со комбинирање на постојани сесии, силна автентикација (Kerberos/HTTPS), ограничени крајни точки и јасни траги за дијагностика, добивате брзина и контрола без жртвување на безбедноста или ревизијата. Ако исто така го стандардизирате активирањето на GPO и ги совладате специјалните случаи (TrustedHosts, двоен скок, сертификати), ќе имате робусна далечинска платформа за дневни операции и одговор на инциденти.
Уредник специјализиран за технологија и интернет прашања со повеќе од десет години искуство во различни дигитални медиуми. Работев како уредник и креатор на содржини за компании за е-трговија, комуникација, онлајн маркетинг и рекламирање. Имам пишувано и на веб-страниците за економија, финансии и други сектори. Мојата работа е и моја страст. Сега, преку моите написи во Tecnobits, се трудам да ги истражувам сите новости и нови можности кои светот на технологијата ни ги нуди секој ден за подобрување на нашите животи.