Geek mokykla Sužinokite, kaip naudoti „Remoting“ „PowerShell“
Vienas iš geriausių „PowerShell“ pasiūlymų yra galimybė valdyti savo serverius nuotoliniu būdu. Jis netgi leidžia jums vienu metu valdyti jų krūvą.
Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti „Windows“ su „PowerShell“
- Mokymasis naudoti „Cmdlet“ „PowerShell“
- Mokymasis naudotis objektais „PowerShell“
- Mokymosi formatavimas, filtravimas ir palyginimas „PowerShell“
Visą savaitę laikykitės likusios serijos.
Kas yra Remoting?
Didelis jūsų serverių valdymas gali būti varginantis, o jei jau turėjote atlikti IIS konfigūracijos pakeitimą 50 žiniatinklio serverių, žinosite, ką turiu galvoje. Tai yra situacijos, kai „PowerShell Remoting“ ir kalbos scenarijų gebėjimai gali būti gelbėti. Naudojant HTTP arba saugesnę HTTPS, „PowerShell Remoting“ leidžia jums siųsti komandas į nuotolinį įrenginį tinkle. Tada mašina paleidžia komandas ir siunčia išvestį atgal, kuri savo ruožtu rodoma ekrane.
Paimkime techninius
„PowerShell Remoting“ esmė yra viena „Windows“ paslauga, „Windows“ nuotolinis valdymas arba „WinRM“ paslauga, kaip ji buvo žinoma. Naudodami „WinRM“ galite nustatyti vieną ar daugiau seanso konfigūracijų (dar vadinamų galiniais taškais), kurie iš esmės yra failai, kuriuose yra informacijos apie patirtį, kurią norite suteikti asmeniui, prisijungiančiam prie nuotolinio „PowerShell“ pavyzdžio. Konkrečiau, galite naudoti sesijos konfigūracijos failus, kad nustatytumėte, kas gali ir kas negali prisijungti prie instancijos, kokių cmdletų ir scenarijų jie gali paleisti, taip pat kokią saugumo aplinką sesija turi vykdyti. Naudodami „WinRM“ paslaugą, jūs taip pat nustatote „klausytojus“, kurie klausosi gaunamų „PowerShell“ užklausų. Šie „klausytojai“ gali būti HTTP arba HTTPS ir gali būti prijungti prie vieno jūsų IP adreso. Kai atidarote „PowerShell“ ryšį su kitu įrenginiu (techniškai tai daroma naudojant „WS-MAN“ protokolą, paremtą HTTP), ryšys susiejasi su vienu iš šių „klausytojų“. Tada „klausytojai“ yra atsakingi už srauto siuntimą į programą, susijusią su atitinkamu seanso konfigūracijos failu; programa (paprastai „PowerShell“, bet, jei norite, galite naudoti kitas prieglobos programas), tada paleidžia komandą ir perduoda rezultatus per „klausytoją“ per tinklą ir atgal į jūsų įrenginį.
Parodyk man kaip
Pirmas dalykas, kurį turėsite padaryti, yra įjungti „Remoting“ įrenginį, prie kurio norite prisijungti. Tai galima padaryti atlikę šiuos veiksmus:
Įgalinti-PSRemoting
Tada turėsite atsakyti „taip“ į visus raginimus. Kai paleisite „Enable-PSRemoting“, jūsų kompiuteryje atlikti keli pakeitimai:
- Įsijungia „WinRM“ paslauga.
- „WinRM“ paslauga keičiasi iš rankinio paleidimo režimo į automatinį.
- Jis sukuria HTTP klausytoją, kuris yra susietas su visomis jūsų tinklo plokštėmis.
- Jis taip pat sukuria WS-MAN protokolo išimties užkardą.
- Sukuriamos kai kurios numatytosios sesijos konfigūracijos
Jei naudojate „Windows 7“ ir tinklo kortelės vieta yra nustatyta kaip „Vieša“, „PowerShell Remoting“ įgalinimas nepavyks. Norėdami ją išspręsti, tiesiog perjunkite į namų ar darbo tinklo vietą. Arba galite praleisti tinklo patikrinimą naudodami šiuos veiksmus:
Įgalinti-PSRemoting -SkipNetworkProfileCheck
Tačiau rekomenduojame pakeisti tinklo vietą.
Yra du būdai prisijungti prie kito įrenginio naudojant „PowerShell“. Yra vienas į vieną metodą, kuris yra labai panašus į SSH naudojimą, ir tada yra vienas iš daugelio metodų.
„PowerShell“ sesijos naudojimas
Pirmasis būdas prisijungti prie nuotolinio įrenginio, naudojant „PowerShell“, yra kažkas vadinamas „PowerShell“ sesija. Paprasčiau tariant, sesija leidžia valdyti nuotolinio įrenginio komandas interaktyviai, panašiai kaip ir savo kompiuteryje. Norėdami atidaryti sesiją, įveskite:
„Enter-PSSession“ - kompiuterio pavadinimas „Darlah“
Sparčioji eilutė gaus priešdėlį, kuris reiškia, kad mašina veikia „cmdlet“.
Iš čia jūs galite iš tiesų elgtis taip, lyg sėdėtumėte prie nuotolinio kompiuterio. Pavyzdžiui, jei norite matyti visus failus C: \ t
Get-ChildItem -Path C: \ t
Jei esate kilę iš „Linux“ fono, galite pagalvoti, kad naudosite šį metodą, kaip „PowerShell“ alternatyvą SSH.
Naudojant „Invoke-Command“
Antrasis būdas, kurį galite naudoti „PowerShell“ nuotoliniame įrenginyje, yra „Invoke-Command“. Privalumas naudojant „Invoke-Command“ atsiranda dėl to, kad tą patį komandą vienu metu galite atlikti keliuose įrenginiuose. Kaip galite įsivaizduoti, tai ypač naudinga, kai norite padaryti kažką panašaus, kaip surinkti įvykių žurnalus iš savo serverių. „Invoke-Command“ seka tokią sintaksę:
„Invoke-Command“ - kompiuterio pavadinimas „Darlah“, „localhost -ScriptBlock“ Get-EventLog taikymas - naujausias 2
Kadangi komanda yra vykdoma lygiagrečiai visose mašinose, jums reikės tam tikro būdo, kad pamatytumėte, iš kurio kompiuterio gautas rezultatas. Tai galite padaryti peržiūrėdami PSComputerName nuosavybę.
Kai naudojate „Invoke-Command“, nebėra objektų, kuriuos galite tikėtis vamzdyne. Matote, kad „PowerShell“ gautų informaciją iš nuotolinio įrenginio atgal į jūsų kompiuterį, ir jiems reikia tam tikro būdo, kad būtų galima atvaizduoti objektus, kuriuos vykdėte nuotolinio įrenginio išėjimuose. Šiomis dienomis atrodo, kad pasirinktas būdas atstovauti hierarchinę duomenų struktūrą yra naudoti XML, o tai reiškia, kad, išduodant komandą naudodamiesi „Invoke-Command“, rezultatai pirmiausia serializuojami į XML prieš siunčiant juos atgal į jūsų kompiuterį. Kai jie grįžta į jūsų mašiną, jie yra deserializuoti atgal į objektą; čia yra tai, kad, kai jie yra deserizuoti, visi metodai, išskyrus metodą ToString (), kad objektas buvo pašalintas iš jo.
Pastaba: Yra keletas šios taisyklės išimčių, pavyzdžiui, daugelis primityvių tipų, pvz., Sveikieji skaičiai, gali būti deserializuojami su pateiktais metodais. Taip pat yra procesas, vadinamas „rehidratacija“, kai kai kurie metodai gali būti įtraukti į deseriarizuotus objektus. Taigi būkite atsargūs ir prisiminkite, kad „Get-Member“ yra jūsų draugas.
Namų darbai
- Skaitykite „PowerShell Remoting“ paslaptis „ebook by Don Jones“.