- Etäkäyttö käyttää WinRM/WS-Man (HTTP/HTTPS) -protokollaa ja sallii 1-1-, 1-moneen- ja pysyvät istunnot suojausrajoituksilla.
- Enable-PSRemoting määrittää palvelun, kuuntelijat ja palomuurin; HTTPS vaatii voimassa olevan varmenteen ja CN/SAN-vastaavuuden.
- Tulokset palautetaan deserialisoituina; metodeja kutsutaan etäskriptilohkon sisällä ja mukautettuja päätepisteitä käytetään tarkkaan delegointiin.
Saatat jo automatisoida monia tehtäviä PowerShellin avulla paikallisesti, mutta missä sitä oikeasti tapahtuu? PowerShell-etäkäyttö tekee eron Se tapahtuu, kun suoritat komentoja etäkoneissa, olipa niitä muutama tai satoja, vuorovaikutteisesti tai rinnakkain. Tämä tekniikka, joka on ollut saatavilla Windows PowerShell 2.0:sta lähtien ja jota on parannettu versiosta 3.0 lähtien, perustuu WS-Managementiin (WinRM) ja muuntaa PowerShell vankassa, skaalautuvassa ja turvallisessa etähallintakanavassa.
Ensinnäkin on tärkeää ymmärtää kaksi keskeistä ideaa: cmdletit, joissa on -TietokoneenNimi-parametri (esim. Get-Process tai Get-Service) eivät ole Microsoftin suosittelema pitkän aikavälin polku, eikä PowerShell Remoting toimi "hakkeroimalla". Itse asiassa valvoo keskinäistä todennusta, tallentaa lokitietoja ja kunnioittaa tavallisia käyttöoikeuksiasi tallentamatta tunnistetietoja tai suorittamatta mitään taianomaisesti super-oikeuksilla.
Mikä on PowerShell-etäkäyttö ja miksi sitä käytetään?
kanssa PowerShell Remoting voit suorita lähes mikä tahansa komento etänä jonka voisit käynnistää paikallisessa istunnossa palveluiden kyselystä määritysten käyttöönottoon ja tehdä sen sadoilla tietokoneilla samanaikaisesti. Toisin kuin cmdlet-komennot, jotka hyväksyvät -ComputerName-valitsimen (monet käyttävät DCOM/RPC:tä), etäkäyttö kulkee WS-Manin (HTTP/HTTPS) kautta, joka on palomuuriystävällisempi, sallii rinnakkaisuuden ja siirtää työn etäisännälle, ei asiakkaalle.
Tämä tarkoittaa kolmea käytännön etua: parempaa suorituskykyä massiivisissa toteutuksissa, vähemmän kitkaa verkoissa rajoittavilla säännöillä ja Kerberos/HTTPS:n kanssa yhteensopivalla suojausmallilla. Lisäksi, koska jokaisesta cmdletistä ei ole riippuvainen oman etäkäytön toteuttaminen, etäkäyttö Se toimii minkä tahansa käsikirjoituksen tai roolin kanssa joka on saatavilla määränpäässä.
Oletusarvoisesti uusissa Windows-palvelimissa etäkäyttö on käytössä; Windows 10/11:ssä sinä aktivoit sen yhdellä cmdlet-komennolla. Ja kyllä, voit käyttää vaihtoehtoisia tunnistetietoja, pysyviä istuntoja, mukautettuja päätepisteitä ja paljon muuta.
Huomautus: Etäkäyttö ei tarkoita kaiken avaamista. Oletusarvoisesti vain ylläpitäjät Ne voivat muodostaa yhteyden, ja toiminnot suoritetaan niiden identiteetin alla. Jos tarvitset tarkkaa delegointia, mukautetut päätepisteet mahdollistavat vain olennaisten komentojen paljastamisen.

Näin se toimii sisällä: WinRM, WS-Man ja portit
PowerShell-etäkäyttö toimii asiakas-palvelin-mallissa. Asiakas lähettää WS-Management-pyyntöjä seuraavan kautta: HTTP (5985/TCP) tai HTTPS (5986/TCP)Kohteessa Windowsin etähallintapalvelu (WinRM) kuuntelee, selvittää päätepisteen (istunnon määritys) ja isännöi PowerShell-istuntoa taustalla (wsmprovhost.exe-prosessi). sarjallisten tulosten palauttaminen asiakkaalle XML:ssä SOAP:n kautta.
Kun otat etäkäytön käyttöön ensimmäisen kerran, kuuntelijat konfiguroidaan, asianmukainen palomuuripoikkeus avataan ja istuntomääritykset luodaan. PowerShell 6+:sta alkaen useita versioita on olemassa samanaikaisesti, ja Ota käyttöön PSRemotointi Rekisteröi päätepisteet nimillä, jotka heijastavat versiota (esimerkiksi PowerShell.7 ja PowerShell.7.xy).
Jos sallit ympäristössäsi vain HTTPS:n, voit luoda turvallinen kuuntelija luotettavan varmentajan myöntämällä varmenteella (suositus). Vaihtoehtoisesti toinen vaihtoehto on käyttää TrustedHostsia rajoitetusti ja riskitietoisesti työryhmätilanteissa tai muilla kuin toimialuetietokoneilla.
Huomaa, että Powershell Remoting voi toimia samanaikaisesti cmdlet-komennojen kanssa, joissa on -ComputerName, mutta Microsoft ajaa WS-Mania eteenpäin standardina ja tulevaisuudenkestävänä tapana etähallintaan.
PowerShell-etäkäytön ja hyödyllisten parametrien käyttöönotto
Windowsissa avaa PowerShell järjestelmänvalvojana ja suorita se. Ota käyttöön PSRemotointiJärjestelmä käynnistää WinRM:n, määrittää automaattisen käynnistyksen, ottaa kuuntelijan käyttöön ja luo asianmukaiset palomuurisäännöt. Julkisen verkkoprofiilin omaavilla työasemilla voit sallia tämän tarkoituksella -OhitaVerkkoprofiilin tarkistus (ja sitten vahvista erityisillä säännöillä):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Syntaksi sallii myös, -Vahvistaa y -Entä jos muutostenhallintaa varten. Muista: Se on saatavilla vain Windowsissa, ja sinun on suoritettava järjestelmänvalvojan oikeudet konsolissa. Luodut säännöt eroavat palvelin- ja asiakasversioiden välillä, erityisesti julkisissa verkoissa, joissa ne ovat oletusarvoisesti rajoitettu paikalliseen aliverkkoon, ellet laajenna soveltamisalaa (esimerkiksi Set-NetFirewallRule-komennolla).
Voit listata jo tallennetut istuntoasetukset ja varmistaa, että kaikki on valmista, käyttämällä Get-PSSessionConfigurationJos PowerShell.x- ja Workflow-päätepisteet tulevat näkyviin, etäkäyttökehys on toiminnassa.

Käyttötilat: 1–1, 1–moneen ja jatkuvat istunnot
Kun tarvitset interaktiivisen konsolin yhteen tietokoneeseen, käänny puoleen Enter-PSSessionKehote tulee näkyviin, ja kaikki suorittamasi toiminnot menevät etäpalvelimelle. Voit käyttää tunnistetietoja uudelleen Get-Credential-komennolla, jotta vältät niiden jatkuvan syöttämisen:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Jos etsit työkalua komentojen lähettämiseen useille tietokoneille samanaikaisesti, tämä on Invoke-Command skriptilohkolla. Oletusarvoisesti se käynnistää jopa 32 samanaikaista yhteyttä (säädettävissä -ThrottleLimit-asetuksella). Tulokset palautetaan muodossa deserialisoidut objektit (ilman "live"-metodeja):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Haluatko kutsua metodia, kuten .Stop() tai .Start()? Tee se. komentosarjan sisällä etäkontekstissa, ei paikallisessa deserialisoidussa objektissa, ja siinä kaikki. Jos vastaava cmdlet-komento (Stop-Service/Start-Service) on olemassa, on yleensä parempi käyttää sitä selkeyden vuoksi.
Vältä istuntojen aloittamisen ja lopettamisen kustannukset jokaisella puhelulla luomalla Pysyvä PSSession ja käytä sitä uudelleen useissa kutsuissa. Käytä New-PSSession-komentoa yhteyden luomiseen ja käytä tunnelia uudelleen Invoke-Command-Session-komennolla. Muista sulkea se Remove-PSSession-komennolla, kun olet valmis.
Sarjallistaminen, rajoitukset ja hyvät käytännöt
Tärkeä yksityiskohta: matkustettaessa esineet "+litistyvät" ja saapuvat perille deserialisoidut tilannevedokset, ominaisuuksilla, mutta ilman metodeja. Tämä on tarkoituksellista ja säästää kaistanleveyttä, mutta se tarkoittaa, että et voi käyttää jäseniä, jotka suorittavat logiikkaa (kuten .Kill()) paikallisessa kopiossa. Ratkaisu on ilmeinen: kutsu näitä metodeja. etänä ja jos tarvitset vain tiettyjä kenttiä, suodata Select-Object-suodattimella lähettääksesi vähemmän dataa.
Skripteissä vältä Enter-PSSession-käskyä (tarkoitettu interaktiiviseen käyttöön) ja käytä Invoke-Command-käskyä skriptilohkojen kanssa. Jos odotat useita kutsuja tai sinun on säilytettävä tila (muuttujat, tuodut moduulit), käytä pysyviä istuntoja ja tarvittaessa katkaise niiden yhteys/yhdistä ne uudelleen Disconnect-PSSession/Connect-PSSession-komennolla PowerShell 3.0+:ssa.
Todennus, HTTPS ja verkkotunnuksen ulkopuoliset skenaariot
Verkkotunnuksessa natiivi todennus on Kerberos Ja kaikki sujuu. Kun laite ei pysty vahvistamaan palvelimen nimeä tai muodostat yhteyden CNAME IP-osoitteeseen tai aliakseen, tarvitset toisen näistä kahdesta vaihtoehdosta: 1) Kuuntelija HTTPS varmenteella luottamasi varmentajan myöntämä, tai 2) lisää kohde (nimi tai IP-osoite) TrustedHosts-luetteloon ja käytä tunnistetietojaToinen vaihtoehto poistaa käytöstä kyseisen isännän keskinäisen todennuksen, joten se supistaa laajuuden minimiinsä.
HTTPS-kuuntelijan määrittäminen edellyttää varmennetta (mieluiten PKI:ltä tai julkiselta varmentajalta), joka on asennettu tiimisäilöön ja sidottu WinRM:ään. Portti 5986/TCP avataan sitten palomuurissa ja sitä käytetään asiakasohjelmassa. -KäytäSSL:ää etäcmdleteissä. Asiakassertifikaatin todennusta varten voit yhdistää sertifikaatin paikalliseen tiliin ja muodostaa yhteyden -Todistuksen peukalojälki (Enter-PSSession ei hyväksy tätä suoraan; luo istunto ensin New-PSSession-komennolla.)
Toinen hyppy ja valtakirjojen delegointi
Kuuluisa "kaksoishyppy" tapahtuu, kun palvelimeen yhteyden muodostamisen jälkeen tarvitset palvelimen päästäksesi käsiksi kolmas resurssi puolestasi (esim. SMB-jako). Tämän voi sallia kahdella tavalla: CredSSP ja resurssipohjainen rajoitettu Kerberos-delegointi.
kanssa CredSSP Annat asiakkaalle ja välittäjälle mahdollisuuden delegoida tunnistetiedot erikseen ja asetat käytännön (ryhmäkäytäntöobjektin), joka sallii delegoinnin tietyille tietokoneille. Määritys on nopea, mutta vähemmän turvallinen, koska tunnistetiedot kulkevat selkotekstinä salatussa tunnelissa. Rajoita aina lähteitä ja kohteita.
Edullisin vaihtoehto verkkotunnuksessa on rajoitettu Kerberos-delegointi (resurssipohjainen rajoitettu delegointi) nykyaikaisessa AD:ssä. Tämä mahdollistaa sen, että päätepiste voi olla riippuvainen keskipisteen delegoinnista tiettyjen palveluiden osalta, jolloin henkilöllisyytesi ei paljastu alkuperäisen yhteyden yhteydessä. Edellyttää uudet toimialueen ohjauskoneet ja päivitetyn RSAT:n.
Mukautetut päätepisteet (istuntomääritykset)
Yksi etäkäytön helmistä on yhteyspisteiden rekisteröintimahdollisuus räätälöidyt ominaisuudet ja rajoituksetEnsin luodaan tiedosto New-PSSessionConfigurationFile-metodilla (esiasennettavat moduulit, näkyvät funktiot, aliakset, ExecutionPolicy, LanguageMode jne.) ja sitten rekisteröidään se Register-PSSessionConfiguration-metodilla, jossa voidaan asettaa Suorita tunnisteena ja käyttöoikeudet (SDDL tai graafinen käyttöliittymä, jossa on -ShowSecurityDescriptorUI).
Turvallisen delegoinnin varmistamiseksi paljasta vain tarvittavat tiedot käyttämällä -VisibleCmdlets/-VisibleFunctions-valitsinta ja poista vapaat komentosarjat käytöstä tarvittaessa käyttämällä Kielitila Rajoitettu kieli tai NoLanguage. Jos jätät FullLanguage-asetuksen pois, joku voisi käyttää komentosarjalohkoa käynnistääkseen paljastamattomia komentoja, jotka yhdessä RunAs-komennon kanssa se olisi reikäSuunnittele nämä päätepisteet tiheällä kammalla ja dokumentoi niiden laajuus.
Verkkotunnukset, ryhmäkäytäntöobjektit ja ryhmäohjelmistot
AD:ssä voit ottaa käyttöön Powershell Remotingin skaalautuvasti ryhmäkäytäntöobjektin avulla: salli WinRM-kuuntelijoiden automaattinen konfigurointi, aseta palvelu automaattiseksija luo palomuuripoikkeus. Muista, että ryhmäkäytäntöobjektit muuttavat asetuksia, mutta ne eivät aina ota palvelua käyttöön välittömästi; joskus sinun on käynnistettävä uudelleen tai pakotettava gpupdate.
Työryhmissä (ei-verkkotunnus) määritä etäkäyttö seuraavasti: Ota käyttöön PSRemotointi, aseta TrustedHosts asiakkaalle (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) ja käytä paikallisia tunnistetietoja. HTTPS:n kanssa voit ottaa käyttöön itse allekirjoitettuja varmenteita, vaikka on suositeltavaa käyttää luotettavaa varmenteiden myöntäjää ja vahvista nimi jota käytät varmenteen -ComputerName-parametrissa (CN/SAN-vastaavuus).
Keskeiset cmdlet-komennot ja syntaksi
Kourallinen kommandojoukkoja suojaa 90 % päivittäisistä skenaarioistaAktivoi/deaktivoi seuraavasti:
Enable-PSRemoting
Disable-PSRemoting
Interaktiivinen istunto 1:1 ja poistuminen:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1–moneen, rinnakkaisuudella ja pätevyydellä:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Pysyvät istunnot ja uudelleenkäyttöä:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Testaus ja WinRM hyödyllinen:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Käytännön vinkkejä palomuurista, verkosta ja porteista
Avaa 5985/TCP HTTP:lle ja 5986/TCP HTTPS:lle kohdetietokoneella ja mikä tahansa välipalomuuriWindows-asiakaskoneissa Enable-PSRemoting luo sääntöjä toimialue- ja yksityisille profiileille; julkisten profiilien osalta se rajoittuu paikalliseen aliverkkoon, ellet muokkaa laajuutta asetuksella Set-NetFirewallRule -RemoteAddress Any (arvo, jonka voit arvioida riskisi perusteella).
Jos käytät SOAR/SIEM-integraatioita, jotka suorittavat etäkomentoja (esim. XSOARista), varmista, että palvelimella on DNS-selvitys isäntiin, yhteys palvelimeen 5985/5986 ja tunnistetiedot, joilla on riittävät paikalliset käyttöoikeudet. Joissakin tapauksissa NTLM/Basic-todennusta saatetaan joutua säätämään (esim. paikallisen käyttäjän käyttäminen Basicissa SSL-salauksen kanssa).
Enable-PSRemoting-parametrit (toiminnallinen yhteenveto)
-Vahvista pyytää vahvistusta ennen suorittamista; -Pakota jättää varoitukset huomiotta ja tee tarvittavat muutokset; -SkipNetworkProfileCheck mahdollistaa etäkäytön julkisissa asiakasverkoissa (oletusarvoisesti rajoitettu paikalliseen aliverkkoon); -WhatIf näyttää, mitä tapahtuisi ilman muutosten käyttöönottoa. Lisäksi, kuten mikä tahansa tavallinen cmdlet, se tukee yhteiset parametrit (-Verbose, -ErrorAction jne.).
Muista, että ”Ota käyttöön” ei luo HTTPS-kuuntelijoita tai -varmenteita puolestasi. Jos tarvitset alusta alkaen päästä päähän -salauksen ja todennuksen, joka perustuu… varmennettu, määritä HTTPS-kuuntelija ja tarkista CN/SAN-arvo -TietokoneenNimi-valitsimessa käytettävän nimen perusteella.
Hyödyllisiä WinRM- ja PowerShell-etäkäyttökomentoja
jotkut välttämättömät yöpöydän tarvikkeet päivästä toiseen:
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
Kun Windowsia hallitaan laajasti etänä, voit siirtyä tietokoneiden välisestä hallinnasta deklaratiiviseen ja turvalliseen lähestymistapaan. Yhdistämällä pysyvät istunnot, vahvan todennuksen (Kerberos/HTTPS), rajoitetut päätepisteet ja selkeät jäljet diagnostiikkaa varten, saat nopeutta ja hallintaa tinkimättä turvallisuudesta tai auditoinnista. Jos myös standardoit ryhmäkäytäntöobjektien aktivoinnin ja hallitset erikoistapaukset (TrustedHosts, kaksoishyppy, varmenteet), sinulla on vankka etäalusta päivittäisiin toimintoihin ja tapahtumiin reagointiin.
Teknologiaan ja internet-asioihin erikoistunut toimittaja, jolla on yli kymmenen vuoden kokemus erilaisista digitaalisista medioista. Olen työskennellyt toimittajana ja sisällöntuottajana verkkokaupan, viestinnän, verkkomarkkinoinnin ja mainonnan yrityksissä. Olen myös kirjoittanut taloustieteen, rahoituksen ja muiden alojen verkkosivuille. Työni on myös intohimoni. Nyt artikkeleideni kautta Tecnobits, Yritän tutkia kaikkia uutisia ja uusia mahdollisuuksia, joita teknologian maailma tarjoaa meille joka päivä parantaaksemme elämäämme.