Geek-koulu: oppii käyttämään etäisyyttä PowerShellissä

Sisällysluettelo:

Geek-koulu: oppii käyttämään etäisyyttä PowerShellissä
Geek-koulu: oppii käyttämään etäisyyttä PowerShellissä
Anonim
Yksi parhaista ominaisuuksista PowerShell tarjoaa on mahdollisuus hallita palvelimia etänä. Se jopa antaa sinun hallita nippu heistä kerralla.
Yksi parhaista ominaisuuksista PowerShell tarjoaa on mahdollisuus hallita palvelimia etänä. Se jopa antaa sinun hallita nippu heistä kerralla.

Muista lukea sarjan aiemmat artikkelit:

  • Opi käyttämään automaattista Windowsia PowerShellillä
  • Learning käyttämään Cmdlets PowerShellissä
  • Oppiminen esineiden käyttämisessä PowerShellissä
  • Oppimisen muotoilu, suodatus ja vertailu PowerShellissä

Ja pysy kuulolla koko sarjan koko viikon ajan.

Mikä on Remoting?

Palvelimesi irtotavarana voi olla tylsiä, ja jos olet joutunut tekemään IIS: n kokoonpanoasetusten muutoksen 50 palvelimella ennen, tiedät, mitä tarkoitan. Nämä ovat sellaisia tilanteita, joissa PowerShell Remoting ja kielen komentosarjat kykenevät pelastamaan. HTTP: n tai turvallisemman HTTPS: n avulla PowerShell Remotingin avulla voit lähettää komentoja etäverkkoon verkossa. Kone suorittaa sitten komennot ja lähettää lähdön takaisin sinulle, joka puolestaan näkyy näytölläsi.

Let's Get tekninen

PowerShell Remotingin ytimessä on yksi Windows-palvelu, Windows Remote Management tai WinRM-palvelu, koska se on tullut tunnetuksi. WinRM: n avulla voit määrittää yhden tai useamman istunnon kokoonpanon (joka tunnetaan myös päätepisteinä), jotka ovat pohjimmiltaan tiedostoja, jotka sisältävät tietoja kokemuksesta, jonka haluat antaa etäyhteydellä olevaan PowerShell-esiintymään. Tarkemmin sanottuna voit käyttää istunnon kokoonpanotiedostoja määritellä, kuka voi ja kuka ei voi muodostaa yhteyttä esimerkiksi, mitä cmdletteja ja komentosarjoja ne voivat käyttää, sekä mitä suojaustoimintaa istunto on suoritettava. WinRM-palvelun avulla voit myös luoda "kuuntelijoita", jotka kuuntelevat tulevia PowerShell-pyyntöjä. Nämä "kuuntelijat" voivat olla joko HTTP tai HTTPS ja ne voidaan sitoa yhdellä IP-osoitteella koneellasi. Kun avaat PowerShell-yhteyden toiseen laitteeseen (tämä tapahtuu teknisesti WS-MAN-protokollaa käyttäen, joka perustuu HTTP: hen), yhteys sidotaan johonkin näistä "kuulijoista". "Kuuntelijat" ovat sen jälkeen vastuussa liikenteen lähettämisestä soveltuvan istunnon kokoonpanotiedostoon liittyvään sovellukseen. sovellus (normaalisti PowerShell, mutta sinulla voi olla muita hosting-sovelluksia, jos haluat) suorittaa komennon ja syöttää tulokset takaisin "kuuntelijan" kautta verkon ja takaisin koneellesi.

Näytä minulle miten

Ensimmäinen asia, jonka sinun tarvitsee tehdä, on ottaa käyttöön Remot-laite koneessa, johon haluat muodostaa yhteyden. Tämä voidaan tehdä suorittamalla seuraavat:

Enable-PSRemoting

Sinun on vastattava kyllä kaikkiin kehotteisiin. Kun suoritat Enable-PSRemoting-toiminnon, tietokoneeseen tehdään muutamia muutoksia:
Sinun on vastattava kyllä kaikkiin kehotteisiin. Kun suoritat Enable-PSRemoting-toiminnon, tietokoneeseen tehdään muutamia muutoksia:
  • WinRM-palvelu käynnistyy.
  • WinRM-palvelu siirtyy manuaalisesta käynnistystilasta Automaattiseksi.
  • Se luo HTTP-kuuntelijan, joka on sidottu kaikkiin verkkokortteihisi.
  • Se luo myös sisääntulon palomuurin poikkeuksen WS-MAN-protokollalle.
  • Joitakin oletussession kokoonpanoja luodaan

Jos käytössäsi on Windows 7 ja verkkokortin sijainti on julkinen, PowerShellin etätoiminto ei onnistu. Voit korjata sen vain vaihtamalla Home- tai Work-verkon sijaintiin. Vaihtoehtoisesti voit ohittaa verkkotarkistuksen seuraavalla tavalla:

Enable-PSRemoting –SkipNetworkProfileCheck

Suosittelemme kuitenkin melko vaihtamaan verkkosijaasi.
Suosittelemme kuitenkin melko vaihtamaan verkkosijaasi.

PowerShellillä voi olla kaksi tapaa liittää toiseen koneeseen. On yksi menetelmä, joka on hyvin samanlainen kuin SSH: n käyttäminen, ja sitten on olemassa monta menetelmää.

PowerShell-istunnon käyttäminen

Ensimmäinen tapa muodostaa yhteys PowerShell-palvelimella olevalle etäkoneelle on käyttää jotain nimeltään PowerShell Session. Yksinkertaisesti istunnon avulla voit suorittaa komentoja etäkoneessa vuorovaikutteisella tavalla samalla tavalla kuin omalla koneellasi. Avaa istunto yksinkertaisesti kirjoittamalla seuraava:

Enter-PSSession –ComputerName “Darlah”

Hälytys saa etuliitteen, joka ilmaisee koneen, että käytät cmdletteja.
Hälytys saa etuliitteen, joka ilmaisee koneen, että käytät cmdletteja.
Täältä voit todella käsitellä kehotetta kuin olisit istumassa etäkoneessa. Jos esimerkiksi haluat nähdä kaikki C: -aseman tiedostot, voit tehdä yksinkertaisen:
Täältä voit todella käsitellä kehotetta kuin olisit istumassa etäkoneessa. Jos esimerkiksi haluat nähdä kaikki C: -aseman tiedostot, voit tehdä yksinkertaisen:

Get-ChildItem –Path C:

Jos tulet Linux-taustasta, voit ajatella tämän yhden etäisyyden menetelmän käyttöä SSH: n PowerShell-vaihtoehtona.
Jos tulet Linux-taustasta, voit ajatella tämän yhden etäisyyden menetelmän käyttöä SSH: n PowerShell-vaihtoehtona.

Invoke-komennon käyttö

Toinen tapa, jolla voit käyttää PowerShellia etäkoneessa, on Invoke-Command-ohjelmalla. Etu käyttämään Invoke-komentoa johtuu siitä, että voit suorittaa saman komennon useilla koneilla samanaikaisesti. Kuten voitte kuvitella, tämä on erityisen hyödyllinen, kun haluat tehdä jotain kerätä tapahtumalokia palvelimistasi. Invoke-Command noudattaa seuraavaa syntaksia:

Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}

Koska komento suoritetaan rinnakkain kaikissa koneissa, tarvitset jonkin tapaa nähdä, mistä tietokoneesta jokin tietty tulos on peräisin. Voit tehdä tämän tarkastelemalla PSComputerName-ominaisuutta.
Koska komento suoritetaan rinnakkain kaikissa koneissa, tarvitset jonkin tapaa nähdä, mistä tietokoneesta jokin tietty tulos on peräisin. Voit tehdä tämän tarkastelemalla PSComputerName-ominaisuutta.
Kun käytät Invoke-Command-ohjelmaa, sinulla ei enää ole esineitä, joita saatat odottaa Pipeline-ohjelmassa. Jotta PowerShell voisi saada tiedot etälaitteesta takaisin koneellesi, näet, että ne tarvitsevat jonkinlaisen tavan esittää esineitä, joita etäkoneessa suorittamasi komento tuottaa. Nykyään vaikuttaa siltä, että valittu tapa edustaa hierarkkista tietorakennetta on käyttää XML: ää, mikä tarkoittaa, kun annat komennon Invoke-Command-komentoa käyttäen, tulokset ensin sarjataan XML: ksi, ennen kuin ne lähetetään takaisin koneellesi.Kun he tulevat takaisin koneellesi, heidät poistetaan esineestä takaisin; tässä on se, että kun ne ovat deserialisoidut, kaikki menetelmät, paitsi ToString () -menetelmä, että kohde on poistettu pois siitä.
Kun käytät Invoke-Command-ohjelmaa, sinulla ei enää ole esineitä, joita saatat odottaa Pipeline-ohjelmassa. Jotta PowerShell voisi saada tiedot etälaitteesta takaisin koneellesi, näet, että ne tarvitsevat jonkinlaisen tavan esittää esineitä, joita etäkoneessa suorittamasi komento tuottaa. Nykyään vaikuttaa siltä, että valittu tapa edustaa hierarkkista tietorakennetta on käyttää XML: ää, mikä tarkoittaa, kun annat komennon Invoke-Command-komentoa käyttäen, tulokset ensin sarjataan XML: ksi, ennen kuin ne lähetetään takaisin koneellesi.Kun he tulevat takaisin koneellesi, heidät poistetaan esineestä takaisin; tässä on se, että kun ne ovat deserialisoidut, kaikki menetelmät, paitsi ToString () -menetelmä, että kohde on poistettu pois siitä.
Image
Image

Huomaa: Tässä säännössä on joitain poikkeuksia, esimerkiksi alkeellisimpia tyyppejä, kuten kokonaislukuja, voidaan deserialisoida sen mukana tulevilla menetelmillä. On myös prosessi, jota kutsutaan Rehydrationiksi, jossa jotkut menetelmät voidaan lisätä takaisin deserialisoiduille kohteille. Joten ole varovainen ja muista, että Get-Member on ystäväsi.

Kotitehtävät

Lue Don Jonesin PowerShell Remoting -bookin salaisuudet.

Suositeltava: