6Sep
Viena iš geriausių "PowerShell" pasiūlymų - tai galimybė nuotoliniu būdu tvarkyti serverius. Tai netgi leidžia jums valdyti jų krūva iš karto.
Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
- Mokytis naudotis "PowerShell" formatais "
- " Mokymasis naudoti objektus "PowerShell"
- Mokymosi formatavimas, filtravimas ir palyginimas sistemoje PowerShell
.likusi serija visą savaitę.
Kas yra Remoting?
Jūsų serverių masinis valdymas gali būti varginantis, ir jei anksčiau turėtumėte padaryti IIS konfigūracijos pakeitimą 50 žiniatinklio serverių, jūs sužinosite, ką aš turiu omenyje. Tai tokios situacijos, kai "PowerShell Remoting" ir kalbos scenarijaus gebėjimai gali padėti gelbėti. Naudodamiesi HTTP ar saugesniu HTTPS, "PowerShell Remoting" leidžia siųsti komandas nuotoliniame kompiuteryje jūsų tinkle. Tada mašina paleidžia komandas ir siunčia produkciją atgal jums, kuri savo ruožtu rodoma ekrane.
Let's Get Technical
"PowerShell Remoting" pagrindu yra viena "Windows" paslauga, "Windows Remote Management" arba "WinRM" paslauga, nes ji tapo žinoma. Naudodami WinRM galite nustatyti vieną ar daugiau seanso konfigūracijų( taip pat žinomų kaip galutiniai taškai), kurie iš esmės yra failai, kuriuose yra informacijos apie patirtį, kurią norite suteikti asmeniui, jungiančiam jūsų nuotolinį "PowerShell" egzempliorių.Konkrečiau, galite naudoti seansų konfigūravimo failus, norėdami nustatyti, kas gali ir kas negali prisijungti prie egzemplioriaus, kokias cmdletus ir scenarijus jie gali paleisti, taip pat kokį saugumo kontekstą turi būti vykdomas seansas. Naudodamiesi WinRM paslauga, jūs taip pat nustatote "klausytojus", kurie klauso gaunamų "PowerShell" užklausų.Šie "klausytojai" gali būti HTTP arba HTTPS ir gali būti susiję su vienu IP adresu jūsų kompiuteryje. Kai atidarote "PowerShell" ryšį su kitu įrenginiu( techniškai tai atliekama naudojant WS-MAN protokolą, pagrįstą HTTP), ryšys susieja vieną iš šių "klausytojų".Tada "klausytojai" atsako už srauto siuntimą į programą, susijusią su atitinkamu sesijos konfigūracijos failu;programa( paprastai PowerShell, bet jūs galite turėti kitas prietaikų programas, jei norite), tada paleiskite komandą ir pateikite rezultatus atgal per "klausytoją" visame tinkle ir vėl į savo kompiuterį.
parodyk man kaip
Pirmas dalykas, kurį reikės padaryti, yra įgalinti "Remoting" įrenginį, į kurį norite prisijungti. Tai gali būti padaryta atlikus šiuos veiksmus:
Enable-PSRemoting
Jums reikės atsakyti "taip" į visus raginimus. Kai paleidžiate Enable-PSRemoting, jūsų kompiuteryje atliekami keli pakeitimai:
- Įjungiama WinRM paslauga.
- "WinRM" paslauga keičiasi nuo rankinio paleidimo režimo iki automatinio.
- Tai sukuria HTTP klausotoją, kuris yra prijungtas prie visų jūsų tinklo plokščių.
- Tai taip pat sukuria WS-MAN protokolo išimtinę užkardos išimtį.
- Kai kurios numatytosios seanso konfigūracijos yra sukurtos
Jei naudojate "Windows 7", o jūsų tinklo plokštės vieta yra nustatyta "Visuomenė", įgalinant "PowerShell Remoting" nepavyks. Norėdami išspręsti šią problemą, tiesiog pereikite į namų ar darbo tinklo vietą.Arba galite praleisti tinklo patikrinimą naudodamiesi šiais būdais:
Įjungti-PSRemoting -SkipNetworkProfileCheck
Tačiau mes rekomenduojame geriau pakeisti savo tinklo vietą.
Yra du būdai, kaip prijungti PowerShell prie kito įrenginio. Yra vieno metodo, kuris yra labai panašus į SSH naudojimą, o tada yra vienas iš daugelio metodų.
"PowerShell" sesijos "
" naudojimas Pirmas būdas prisijungti prie nuotolinio kompiuterio naudodamas "PowerShell" naudoja "PowerShell Session".Paprasčiausiai įdiekite sesiją, kad galėtumėte paleisti komandas nuotoliniame kompiuteryje interaktyviai, taip pat, kaip ir savo kompiuteryje. Norėdami atidaryti seansą, tiesiog įveskite:
Enter-PSSession -ComputerName "Darlah"
Lauke pasirodys prefiksas, kuris reiškia mašiną, su kuria naudojate cmdlet.
Iš čia galite iš tikrųjų elgtis taip, lyg jūs sėdėtumėte nuotoliniame kompiuteryje. Pavyzdžiui, jei norite pamatyti visus failus C: \ diske, galite padaryti paprastą:
Get-ChildItem -Path C: \
Jei atvyksite iš "Linux" fono, galite galvoti apie tai, kaip naudoti vieną iš vieno šalinimo metodo kaip "PowerShell" alternatyvą SSH.
"Invoke-Command"
naudojimas Antrasis būdas, kuriuo galite naudoti "PowerShell" nuotoliniame kompiuteryje, yra "Invoke-Command".Privalumas naudoti "Invoke-Command" priklauso nuo to, kad tą pačią komandą galite paleisti keliose mašinose vienu metu. Kaip galite įsivaizduoti, tai ypač naudinga, jei norite ką nors padaryti, pavyzdžiui, surinkti įvykių žurnalus iš savo serverių."Invoke-Command" seka tokia sintaksė:
"Invoke-Command" -ComputerName Darlah, localhost -ScriptBlock( Get-EventLog taikymas -Newest 2)
Kadangi komanda paleidžiama lygiagrečiai visose mašinose, jums reikės šiek tiek sužinoti, kuris kompiuterisbuvo gautas rezultatas. Tai galite padaryti, žiūrėdami nuosavybės PSComputerName.
Kai naudojate "Invoke-Command", jūs nebeturite objektų, kuriuos galite tikėtis "Pipeline".Matote, kad "PowerShell" atgautų informaciją iš nuotolinio kompiuterio atgal į jūsų kompiuterį, jiems reikia tam tikros formos atstovauti objektams, kuriuos vykdote komanda nuotolinio kompiuterio išėjimuose.Šiomis dienomis atrodo, kad pasirinktas būdas atstovauti hierarchinę duomenų struktūrą yra naudoti XML, o tai reiškia, kad, kai komandą išleidote naudodamiesi "Invoke-Command", rezultatai pirmą kartą perduodami į XML, prieš siunčiant juos į jūsų kompiuterį.Kai jie grįš į jūsų kompiuterį, jie deserializuojami atgal į objektą;Gutka yra tai, kad kai jie yra deserializuoti, visi metodai, išskyrus ToString() metodą, kad objektas buvo pašalintas nuo jo.
Pastaba: šia taisykle yra keletas išimčių, pavyzdžiui, dauguma primityvių tipų, pavyzdžiui, sveikieji skaičiai, gali būti deserializuoti su jo metodais. Taip pat yra procesas, vadinamas rehidravimu, kai kai kuriuos metodus galima pridėti prie deserializuotų objektų.Taigi būk atsargus ir nepamirškite, kad "Get-Member" yra tavo draugas.
Namų darbas
- Perskaitykite Don Jones "PowerShell Remoting" e-knygos paslaptis.