Ինչպես կառավարել ձեր համակարգիչը բջջային հեռախոսից՝ օգտագործելով PowerShell Remoting-ը

Վերջին թարմացումը. 15/10/2025
Հեղինակը: Դանիել Տեռասա

  • Հեռակառավարումը օգտագործում է WinRM/WS-Man (HTTP/HTTPS) և թույլ է տալիս 1-ից 1, 1-ից շատ և մշտական ​​սեսիաներ՝ անվտանգության կարգավորումներով։
  • Enable-PSRemoting-ը կարգավորում է ծառայությունը, լսողները և firewall-ը։ HTTPS-ը պահանջում է վավեր վկայագիր և CN/SAN համընկնում։
  • Արդյունքները վերադարձվում են ապասերիականացված վիճակում, մեթոդները կանչվում են հեռակա սկրիպտային բլոկի ներսում, իսկ մանրամասն պատվիրակման համար օգտագործվում են հատուկ վերջնակետեր։
PowerShell հեռակառավարում

Դուք կարող եք արդեն ավտոմատացնել բազմաթիվ առաջադրանքներ PowerShell-ի միջոցով տեղական մակարդակով, բայց իրականում որտե՞ղ եք դա անում։ PowerShell հեռակառավարումը տարբերություն է ստեղծում Դա այն դեպքում է, երբ դուք հրամաններ եք գործարկում հեռակա մեքենաների վրա, լինեն դրանք մի քանիսը, թե հարյուրավորները, ինտերակտիվ կամ զուգահեռ: Այս տեխնոլոգիան, որը հասանելի է 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), հեռակա ճանապարհորդում է WS-Man-ի միջոցով (HTTP/HTTPS), որն ավելի հարմար է firewall-ի համար, թույլ է տալիս զուգահեռություն և աշխատանքը տեղափոխում է հեռակա հոսթին, այլ ոչ թե հաճախորդին։

Սա թարգմանվում է երեք գործնական առավելությունների՝ ավելի լավ կատարողականություն զանգվածային կատարումների դեպքում, ցանցերում ավելի քիչ շփում սահմանափակող կանոններով և Kerberos/HTTPS-ին համապատասխանող անվտանգության մոդելով։ Ավելին, չկախվելով յուրաքանչյուր cmdlet-ից՝ իր սեփական հեռակառավարիչը իրականացնելու համար, հեռակառավարումը Այն աշխատում է ցանկացած սցենարի կամ դերի համար որը հասանելի է նպատակակետում։

Ըստ լռելյայնի, վերջին Windows սերվերները գալիս են հեռակառավարման գործառույթը միացված. Windows 10/11-ում դուք այն ակտիվացնում եք մեկ cmdlet-ով։ Եվ այո, դուք կարող եք օգտագործել այլընտրանքային մուտքային տվյալներ, մշտական ​​​​սեսիաներ, հատուկ վերջնակետեր և այլն։

Նշում. Հեռակառավարումը չի նշանակում ամեն ինչ բացել։ Ըստ լռելյայնի, միայն ադմինիստրատորներ Նրանք կարող են միանալ, և գործողությունները կատարվում են նրանց ինքնության ներքո։ Եթե ձեզ անհրաժեշտ է մանրակրկիտ պատվիրակում, հատուկ վերջնակետերը թույլ են տալիս ցուցադրել միայն անհրաժեշտ հրամանները։

PowerShell հեռակառավարման ճարտարապետություն

Ինչպես է այն աշխատում ներսում՝ WinRM, WS-Man և պորտեր

PowerShell Remoting-ը աշխատում է հաճախորդ-սերվեր մոդելում: Հաճախորդը WS-Management հարցումներն ուղարկում է հետևյալ կերպ. HTTP (5985/TCP) կամ HTTPS (5986/TCP)Նշանակետի վրա Windows Remote Management (WinRM) ծառայությունը լսում է, որոշում է վերջնակետը (սեսիայի կարգավորումը) և հոսթինգ է անում PowerShell սեսիան ֆոնային ռեժիմում (wsmprovhost.exe գործընթաց), սերիականացված արդյունքների վերադարձը հաճախորդին XML-ում SOAP-ի միջոցով։

Առաջին անգամ, երբ դուք միացնում եք հեռակառավարումը, կարգավորվում են լսողները, բացվում է համապատասխան firewall բացառությունը և ստեղծվում են սեսիայի կարգավորումները: PowerShell 6+-ից սկսած, համակեցության մեջ են մի քանի հրատարակություններ, և Միացնել-PSRemoting-ը Գրանցվում են վերջնակետերը տարբերակին համապատասխանող անուններով (օրինակ՝ PowerShell.7 և PowerShell.7.xy):

Բացառիկ բովանդակություն - Սեղմեք այստեղ  Ինչպե՞ս շտկել կատարողականի խնդիրները Intego Mac Internet Security-ի հետ:

Եթե ​​ձեր միջավայրում թույլատրում եք միայն HTTPS, կարող եք ստեղծել անվտանգ լսող վստահելի վկայականի կողմից տրված վկայականով (խորհուրդ է տրվում): Այլընտրանքային տարբերակ է TrustedHosts-ի օգտագործումը սահմանափակ, ռիսկի գիտակցմամբ եղանակով՝ աշխատանքային խմբի սցենարների կամ ոչ տիրույթային համակարգիչների համար:

Նկատի ունեցեք, որ Powershell Remoting-ը կարող է համակեցություն ունենալ cmdlet-ների հետ՝ -ComputerName ֆունկցիայով, սակայն Microsoft-ը առաջ է մղում WS-Man-ը որպես հեռակա կառավարման ստանդարտ և ապագային հարմար միջոց։

PowerShell հեռակառավարման միացում և օգտակար պարամետրեր

Windows-ում պարզապես բացեք PowerShell-ը որպես ադմինիստրատոր և գործարկեք Միացնել-PSRemoting-ըՀամակարգը գործարկում է WinRM-ը, կարգավորում է ավտոմատ մեկնարկը, միացնում է լսողը և ստեղծում է համապատասխան firewall կանոններ: Հանրային ցանցային պրոֆիլ ունեցող հաճախորդների վրա դուք կարող եք միտումնավոր թույլատրել սա՝ օգտագործելով -SkipNetworkProfileCheck (և այնուհետև ամրապնդեք կոնկրետ կանոններով):

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

 

Սինտաքսը նաև թույլ է տալիս՝ -Հաստատել y -Ի՞նչ կլինի, եթե փոփոխությունների վերահսկման համար։ Հիշե՛ք՝ Այն հասանելի է միայն Windows-ում, և դուք պետք է աշխատեցնեք բարձրացված կոնսոլը: Ստեղծված կանոնները տարբերվում են Server և Client տարբերակների միջև, հատկապես հանրային ցանցերում, որտեղ լռելյայնորեն դրանք սահմանափակվում են տեղական ենթացանցով, եթե դուք չեք ընդլայնում շրջանակը (օրինակ՝ Set-NetFirewallRule-ի միջոցով):

Արդեն ձայնագրված սեսիայի կարգավորումները ցուցակագրելու և ամեն ինչ պատրաստ լինելու հաստատման համար օգտագործեք Get-PSSessionConfigurationԵթե ​​PowerShell.x և Workflow վերջնակետերը հայտնվում են, Remoting framework-ը գործում է։

Հեռակա նիստ PowerShell-ի միջոցով

Օգտագործման ռեժիմներ՝ 1-ից 1, 1-ից շատ և մշտական ​​սեանսներ

Երբ ձեզ անհրաժեշտ է ինտերակտիվ կոնսոլ մեկ համակարգչի վրա, դիմեք Enter-PSSessionՀուշումը կհայտնվի, և ձեր կատարած ամեն ինչ կփոխանցվի հեռակա հոսթին: Դուք կարող եք վերօգտագործել մուտքային տվյալները Get-Credential-ի միջոցով՝ դրանք անընդհատ վերամուտքագրելուց խուսափելու համար:

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

Եթե ​​դուք փնտրում եք միաժամանակ մի քանի համակարգչի հրամաններ ուղարկելը, ապա գործիքը հետևյալն է. Հրավիրել-հրահանգել սկրիպտային բլոկով։ Ըստ լռելյայնության, այն գործարկում է մինչև 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-ով՝ ավելի քիչ տվյալներ ուղարկելու համար։

Բացառիկ բովանդակություն - Սեղմեք այստեղ  Ինչպե՞ս խուսափել TikTok-ի արգելափակումներից և պատժամիջոցներից:

Սկրիպտներում խուսափեք Enter-PSSession-ից (նախատեսված է ինտերակտիվ օգտագործման համար) և օգտագործեք Invoke-Command-ը սկրիպտային բլոկների հետ։ Եթե ​​ակնկալում եք բազմակի կանչեր կամ անհրաժեշտ է պահպանել վիճակը (փոփոխականներ, ներմուծված մոդուլներ), օգտագործել մշտական ​​​​սեսիաներ և, եթե կիրառելի է, անջատեք/վերամիացրեք դրանք PowerShell 3.0+-ի Disconnect-PSSession/Connect-PSSession հրամանների միջոցով։

Նույնականացում, HTTPS և տիրույթից դուրս սցենարներ

Դոմեյնում բնիկ նույնականացումը հետևյալն է. Կերբերոս Եվ ամեն ինչ հոսում է իր հունով։ Երբ սարքը չի կարողանում ստուգել սերվերի անունը, կամ դուք միանում եք CNAME IP հասցեին կամ կեղծանվանը, ձեզ անհրաժեշտ է այս երկու տարբերակներից մեկը՝ 1) Լսող HTTPS վկայականով տրամադրվել է ձեր վստահելի վկայականի կողմից, կամ 2) ավելացրեք նպատակակետը (անունը կամ IP-ն) TrustedHosts-ում և օգտագործել մուտքային տվյալներըԵրկրորդ տարբերակը անջատում է այդ հոսթի փոխադարձ նույնականացումը, ուստի այն նվազեցնում է շրջանակը մինչև անհրաժեշտ նվազագույնը։

HTTPS լսողի կարգավորման համար անհրաժեշտ է վկայական (իդեալական է՝ ձեր PKI-ից կամ հանրային CA-ից), որը տեղադրվում է թիմային պահեստում և կապված է WinRM-ին: Այնուհետև firewall-ում բացվում է 5986/TCP միացքը և օգտագործվում է հաճախորդից: -ՕգտագործելSSL հեռակա cmdlet-ներում: Հաճախորդի վկայականի նույնականացման համար կարող եք վկայականը կապել տեղական հաշվի հետ և կապվել -Վկայականի մատնահետք (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-ներ և խմբային ծրագրեր

AD-ում դուք կարող եք Powershell Remoting-ը տեղակայել մասշտաբային GPO-ի միջոցով՝ թույլ տալով WinRM լսողների ավտոմատ կարգավորում, ծառայությունը դարձրեք ավտոմատև ստեղծեք firewall-ի բացառությունը: Հիշե՛ք, որ GPO-ները փոխում են կարգավորումները, բայց դրանք միշտ չէ, որ անմիջապես միացնում են ծառայությունը. երբեմն անհրաժեշտ է վերագործարկել կամ պարտադրել gpupdate:

Բացառիկ բովանդակություն - Սեղմեք այստեղ  Ինչպես իմանալ ձեր Gmail-ի գաղտնաբառը

Աշխատանքային խմբերում (ոչ տիրույթային), կարգավորեք հեռակառավարումը Միացնել-PSRemoting-ը, սահմանեք TrustedHosts-ը հաճախորդի վրա (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) և օգտագործեք տեղական հավատարմագրերը: HTTPS-ի համար կարող եք միացնել ինքնաստորագրված վկայագրեր, չնայած խորհուրդ է տրվում օգտագործել վստահելի վկայականի աղբյուր և վավերացնել անունը որը դուք կօգտագործեք -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

Գործնական նշումներ firewall-ի, ցանցի և պորտերի վերաբերյալ

Բացեք 5985/TCP-ն HTTP-ի համար և 5986/TCP-ն HTTPS-ի համար նպատակային համակարգչում և դրա վրա։ ցանկացած միջանկյալ firewallWindows հաճախորդների վրա Enable-PSRemoting-ը կանոններ է ստեղծում տիրույթի և մասնավոր պրոֆիլների համար։ Հանրային պրոֆիլների համար այն սահմանափակվում է տեղական ենթացանցով, եթե դուք չեք փոփոխում շրջանակը Set-NetFirewallRule -RemoteAddress Any-ով (արժեք, որը կարող եք գնահատել ձեր ռիսկի հիման վրա):

Եթե ​​օգտագործում եք SOAR/SIEM ինտեգրացիաներ, որոնք կատարում են հեռակա հրամաններ (օրինակ՝ XSOAR-ից), համոզվեք, որ սերվերն ունի DNS-ի լուծաչափ հոսթերին, կապ 5985/5986-ի հետ և համապատասխան տեղական թույլտվություններով մուտքագրման տվյալներ: Որոշ դեպքերում, NTLM/Basic նույնականացումը կարող է կարգավորման կարիք ունենալ (օրինակ՝ Basic-ում SSL-ով տեղական օգտատիրոջ օգտագործում):

Enable-PSRemoting պարամետրեր (գործառնական ամփոփում)

-Հաստատումը պահանջում է հաստատում կատարելուց առաջ։ -Հարկադրում անտեսում է նախազգուշացումները և կատարել անհրաժեշտ փոփոխությունները։ -SkipNetworkProfileCheck-ը հնարավորություն է տալիս հեռակա մոնիթորինգը հանրային հաճախորդային ցանցերում (սահմանափակվում է միայն տեղական ենթացանցով)։ -WhatIf-ը ցույց է տալիս, թե ինչ կպատահի առանց փոփոխությունները կիրառելու։ Բացի այդ, ինչպես ցանկացած ստանդարտ cmdlet, այն աջակցում է ընդհանուր պարամետրեր (-Մանրամասն, -Սխալի գործողություն և այլն):

Հիշե՛ք, որ «Միացնել»-ը ձեզ համար 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, կրկնակի ցատկ, վկայագրեր), դուք կունենաք ամուր հեռակա հարթակ ամենօրյա գործողությունների և միջադեպերին արձագանքելու համար:

անտեսանելի վնասակար ծրագիր
Առնչվող հոդված.
Ինչպես պաշտպանել ձեր համակարգիչը անտեսանելի վնասակար ծրագրերից, ինչպիսիք են XWorm-ը և NotDoor-ը