Būtinai perskaitykite ankstesnius serijos straipsnius:
- Sužinokite, kaip automatizuoti "Windows" su "PowerShell"
- Mokytis naudotis "PowerShell" kompiliacijomis
- Mokymasis naudoti objektus PowerShell
- Mokymosi formatavimas, filtravimas ir palyginimas PowerShell
Ir visada sekite visą seriją likusiai savaitę.
Kas yra Remoting?
Masinis serverių 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" branduolyje yra viena "Windows" paslauga, "Windows" nuotolinis valdymas 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), paleidžia komandą ir perduoda rezultatus per "klausytoją" visame tinkle ir atgal į savo kompiuterį.
Parodyk man kaip
Pirmas dalykas, kurį reikės atlikti, yra įgalinti "Remoting" įrenginyje, prie kurio norite prisijungti. Tai galima padaryti, atlikdami šiuos veiksmus:
Enable-PSRemoting
Tuomet turėsite atsakyti "taip" į visus raginimus. Kai paleisite "Enable-PSRemoting", jūsų kompiuteryje yra keli pakeitimai:
- Įdiegta WinRM paslauga.
- "WinRM" paslauga keičiasi nuo rankinio paleidimo režimo iki automatinio.
- Tai sukuria HTTP klausytoją, kuris yra privalomas visoms jūsų tinklo plokštėms.
- Tai taip pat sukuria WS-MAN protokolo išimtinę užkardos išimtį.
- Kai kurios numatytos seanso konfigūracijos yra sukurtos
Jei naudojate "Windows 7", o jūsų tinklo plokštės vieta nustatyta kaip "Vieša", "PowerShell Remoting" nepavyks. Norėdami išspręsti šią problemą, tiesiog pereikite į namų ar darbo tinklo vietą. Arba galite praleisti tinklo patikrinimą, naudodamasis šiais būdais:
Enable-PSRemoting –SkipNetworkProfileCheck
Su "PowerShell" galima prisijungti prie kito kompiuterio dviem būdais. 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" seansą. Tiesiog įkiškite sesiją, kad galėtumėte paleisti komandas nuotoliniame kompiuteryje interaktyviai, taip pat ir tu pats savo kompiuteryje. Norėdami atidaryti seansą, tiesiog įveskite:
Enter-PSSession –ComputerName “Darlah”
Get-ChildItem –Path C:
"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 Application -Newest 2}
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.