Husk å lese de forrige artiklene i serien:
- Lær hvordan du automatiserer Windows med PowerShell
- Lære å bruke Cmdlets i PowerShell
- Lære hvordan du bruker objekter i PowerShell
- Læreformatering, filtrering og sammenligning i PowerShell
Og hold deg innstilt for resten av serien hele uken.
Hva er Remoting?
Bulkadministrasjon av serverne dine kan være kjedelig, og hvis du må endre en IIS-konfigurasjon på 50 webservere før, vet du hva jeg mener. Det er slike situasjoner når PowerShell Remoting og språkets skriptegenskaper kan komme til redning. Ved hjelp av HTTP eller den sikrere HTTPS-en, kan PowerShell Remoting du sende kommandoer til en ekstern maskin på nettverket ditt. Maskinen kjører deretter kommandoene og sender utgangen tilbake til deg, som igjen vises på skjermen.
La oss få teknisk
Kjernen til PowerShell Remoting ligger en enkelt Windows-tjeneste, Windows Remote Management eller WinRM-tjenesten, slik den er blitt kjent. Ved hjelp av WinRM kan du konfigurere en eller flere sesjonskonfigurasjoner (også kjent som sluttpunkter), som egentlig inneholder filer som inneholder informasjon om opplevelsen du vil gi til personen som kobler til din eksterne PowerShell-forekomst. Mer spesifikt kan du bruke øktkonfigurasjonsfiler til å definere hvem som kan og hvem ikke kan koble til forekomsten, hvilke cmdlets og skript de kan kjøre, samt hvilken sikkerhetsmessig kontekst sesjonen må kjøre under. Ved hjelp av WinRM-tjenesten oppretter du også "lyttere", som lytter etter innkommende PowerShell-forespørsler. Disse "lytterne" kan enten være HTTP eller HTTPS og kan være bundet til en enkelt IP-adresse på maskinen din. Når du åpner en PowerShell-tilkobling til en annen maskin (teknisk sett gjøres dette ved hjelp av WS-MAN-protokollen, som er basert på HTTP), binder forbindelsen til en av disse "lytterne". "Lytterne" har da ansvaret for å sende trafikken til applikasjonen assosiert med den aktuelle øktkonfigurasjonsfilen; programmet (normalt PowerShell, men du kan ha andre vertsprogrammer hvis du vil), kjører deretter kommandoen og feeds resultatene tilbake gjennom "lytteren" over nettverket og tilbake til maskinen.
Vis meg hvordan
Det første du må gjøre er å aktivere Remoting på maskinen du vil koble til. Dette kan gjøres ved å kjøre følgende:
Enable-PSRemoting
- WinRM-tjenesten starter opp.
- WinRM-tjenesten endres fra manuell oppstartsmodus til automatisk.
- Det oppretter en HTTP-lytter som er bundet til alle nettverkskortene dine.
- Det skaper også et innkommende brannmur unntak for WS-MAN protokollen.
- Noen standard sesjonskonfigurasjoner er opprettet
Hvis du kjører Windows 7 og nettverkskortets plassering er satt til Offentlig, vil PowerShell Remoting mislykkes. For å fikse det, må du bare bytte til Hjem eller Arbeidsnettsted. Alternativt kan du hoppe over nettverkskontrollen ved hjelp av følgende:
Enable-PSRemoting –SkipNetworkProfileCheck
Det er to måter å koble til en annen maskin ved hjelp av PowerShell. Det er den ene til en metoden, som ligner på å bruke SSH, og så er det en til mange metoder.
Bruke en PowerShell-sesjon
Den første måten å koble til en ekstern maskin ved hjelp av PowerShell, bruker noe som kalles en PowerShell-sesjon. Enkelt å sette en økt lar deg kjøre kommandoer på den eksterne maskinen på en interaktiv måte, omtrent det samme du ville på din egen maskin. For å åpne en økt, skriv bare følgende:
Enter-PSSession –ComputerName “Darlah”
Get-ChildItem –Path C:
Bruke Invoke-Command
Den andre måten du kan bruke PowerShell på en ekstern maskin, er å bruke Invoke-Command. Fordelen med å bruke Invoke-Command kommer fra det faktum at du kan utføre samme kommando på flere maskiner samtidig. Som du kan forestille deg, er dette spesielt nyttig når du vil gjøre noe som samler hendelseslogger fra serverne dine. Invoke-Command følger følgende syntaks:
Invoke-Command -ComputerName Darlah,localhost -ScriptBlock {Get-EventLog Application -Newest 2}
Merk: Det er noen unntak fra denne regelen, for eksempel kan de fleste primitive typer som heltall deserialiseres med sine metoder inkludert. Det er også en prosess som heter Rehydrering hvor noen metoder kan legges tilbake til deserialiserte objekter. Så vær forsiktig og husk Get-Member er din venn.