Geek-koulu Opi käyttämään Remotingia PowerShellissä
Yksi parhaista ominaisuuksista PowerShell tarjoaa mahdollisuuden hallita palvelimia etänä. Sen avulla voit myös hallita joukkoa samanaikaisesti.
Muista lukea sarjan aiemmat artikkelit:
- Opi automatisoimaan Windows PowerShellillä
- Oppiminen käyttämään Cmdlet-tiedostoja PowerShellissä
- Opi käyttämään esineitä PowerShellissä
- Oppimisen muotoilu, suodatus ja vertailu PowerShellissa
Ja pysy kuulolla koko sarjan koko viikon ajan.
Mikä on Remoting?
Palvelimien hallinnan hallinta voi olla tylsiä, ja jos sinun on pitänyt tehdä IIS-kokoonpanon muutos 50 palvelimelle ennen, tiedät mitä tarkoitan. Nämä ovat sellaisia tilanteita, joissa PowerShell Remoting ja kielen komentosarjat kykenevät pelastamaan. Käyttämällä HTTP- tai turvallisempaa HTTPS-protokollaa PowerShell Remotingin avulla voit lähettää komentoja verkon etäkoneelle. Laite sitten suorittaa komennot ja lähettää lähdön takaisin sinulle, joka puolestaan näkyy näytössä.
Let's Get tekninen
PowerShell Remotingin ytimessä on yksi Windows-palvelu, Windows-etähallinta tai WinRM-palvelu, kuten se on tullut tunnetuksi. WinRM: n avulla voit määrittää yhden tai useamman istunnon kokoonpanon (tunnetaan myös nimellä päätepisteet), jotka ovat pohjimmiltaan tiedostoja, jotka sisältävät tietoa siitä, mitä kokemusta haluat antaa etäyhteyden muodostavaan PowerShell-instanssiin. Tarkemmin sanottuna voit käyttää istunnon määritystiedostoja määrittelemään, kuka voi ja kuka ei voi muodostaa yhteyden esimerkkiin, mitä cmdlet-tiedostoja ja skriptejä ne voivat suorittaa, sekä mitä suojauskontekstia istunnon on suoritettava. WinRM-palvelun avulla voit myös asettaa ”kuuntelijat”, jotka kuuntelevat saapuvia PowerShell-pyyntöjä. Nämä “kuuntelijat” voivat olla joko HTTP- tai HTTPS-yhteyksiä, ja ne voivat olla sidoksissa yhteen IP-osoitteeseen koneessasi. Kun avaat PowerShell-yhteyden toiseen laitteeseen (teknisesti tämä tapahtuu käyttämällä HTTP-pohjaista WS-MAN-protokollaa), yhteys sitoutuu johonkin näistä ”kuuntelijoista”. ”Kuuntelijat” ovat sen jälkeen vastuussa liikenteen lähettämisestä sovellukseen, joka liittyy sopivan istunnon määritystiedostoon; sovellus (yleensä PowerShell, mutta sinulla voi olla muita isännöintisovelluksia, jos haluat) suorittaa tämän komennon ja syöttää tulokset takaisin "kuuntelijan" kautta verkon yli ja takaisin laitteeseen.
Näytä minulle miten
Ensimmäinen asia, jonka sinun tarvitsee tehdä, on ottaa käyttöön Remoting koneella, johon haluat muodostaa yhteyden. Tämä voidaan tehdä suorittamalla seuraava:
Enable-PSRemoting
Sinun täytyy sitten vastata kyllä kaikkiin kehotuksiin. Kun käynnistät Enable-PSRemoting -toiminnon, tietokoneeseen tehdään muutamia muutoksia:
- WinRM-palvelu käynnistyy.
- WinRM-palvelu muuttuu manuaalisen käynnistystilan tilasta Automaattinen.
- Se luo HTTP-kuuntelijan, joka on sidottu kaikkiin verkkokortteihin.
- Se luo myös sisääntulevan palomuurin poikkeuksen WS-MAN-protokollalle.
- Joitakin oletusistuntojen kokoonpanoja luodaan
Jos käytössäsi on Windows 7 ja verkkokortin sijainti on asetettu julkiseksi, PowerShell Remoting -toiminto epäonnistuu. Voit korjata sen yksinkertaisesti siirtymällä Koti- tai Työverkoston sijaintiin. Vaihtoehtoisesti voit ohittaa verkon tarkistuksen seuraavasti:
Enable-PSRemoting -SkipNetworkProfileCheck
Suosittelemme kuitenkin vaihtamaan verkon sijaintia.
Voit kytkeä toisen koneen PowerShellin avulla kahdella tavalla. Yksi on yksi menetelmä, joka on hyvin samanlainen kuin SSH: n käyttäminen, ja sitten on yksi moniin menetelmiin.
PowerShell-istunnon käyttäminen
Ensimmäinen tapa kytkeä PowerShellia käyttävään etäkoneeseen on jotain, jota kutsutaan PowerShell-istunnoksi. Yksinkertaisesti sanottuna istunnon avulla voit suorittaa etälaitteen komentoja vuorovaikutteisella tavalla samalla tavalla kuin omalla koneellasi. Voit avata istunnon seuraavasti:
Enter-PSSession -Tietokoneenimi “Darlah”
Kehote saa etuliitteen, joka tarkoittaa sitä konetta, jota käytät cmdlet-ohjelmia vastaan.
Täältä voit todella kohdella kehotusta kuin olisit istumassa kauko-koneella. Esimerkiksi, jos haluat nähdä kaikki C: n tiedostot, voit tehdä yksinkertaisen:
Get-ChildItem -Path C: \ t
Jos olet peräisin Linux-taustasta, voit ajatella, että käytät tätä menetelmää yhdellä tavalla siirtymiseksi PowerShell-vaihtoehtona SSH: lle.
Käyttämällä Invoke-Commandia
Toinen tapa, jolla voit käyttää PowerShellia etälaitteessa, on Invoke-Command. Invoke-Commandin käytön etuna on se, että voit suorittaa saman komennon useilla koneilla samanaikaisesti. Kuten voitte kuvitella, tämä on erityisen hyödyllistä, kun haluat tehdä jotain sellaista, joka kerää tapahtumalokia palvelimilta. Invoke-Command seuraa seuraavaa syntaksia:
Invoke-Command -tietokoneenimi Darlah, localhost -ScriptBlock Get-EventLog-sovellus -Uutaisin 2
Koska komento suoritetaan rinnakkain kaikissa koneissa, tarvitset jonkinlaisen tavan nähdä, mikä PC on tietty tulos. Voit tehdä tämän tarkastelemalla PSComputerName-ominaisuutta.
Kun käytät Invoke-Command -ohjelmaa, sinulla ei ole enää kohteita, joita voit odottaa putkilinjassa. Nähdään, jotta PowerShell voi saada tiedot etälaitteesta takaisin koneellesi, he tarvitsevat jonkinlaisen tavan edustaa esineitä, joita komennolla käytit koneen ulostuloissa. Nykyään näyttää siltä, että valittu tapa edustaa hierarkkista tietorakennetta on käyttää XML: ää, mikä tarkoittaa, että kun annat komennon Invoke-Commandilla, tulokset ensin sarjataan XML: ksi ennen kuin ne lähetetään takaisin laitteellesi. Kun he palaavat koneellesi, ne deserializoidaan takaisin kohteeseen; täällä on se, että kun ne on deseriaalisoitu, kaikki menetelmät, paitsi ToString () -menetelmä, että kohde on poistettu siitä.
Huomautus: Tästä säännöstä on joitakin poikkeuksia, esimerkiksi useimmat primitiiviset tyypit, kuten kokonaisluvut, voidaan deserializoida sen sisältämillä menetelmillä. On myös prosessi, jota kutsutaan rehydraatioksi, jossa joitakin menetelmiä voidaan lisätä takaisin deseriaalisoituihin kohteisiin. Joten olla varovainen ja muista, että Get-Member on ystäväsi.
Kotitehtävät
- Lue Don Jonesin PowerShell Remotingin salaisuuksia.