Husk å lese de forrige artiklene i serien:
- Lær hvordan du automatiserer Windows med PowerShell
- Lære å bruke Cmdlets i PowerShell
Og hold deg innstilt for resten av serien hele uken.
objekter
Har du noen gang lurt på hva som setter PowerShell bortsett fra et tradisjonelt Linux-skall som Bash, eller til og med arven kommandoprompt? Svaret er veldig enkelt: Tradisjonelle skaller skriver ut tekst, noe som gjør det vanskelig å gjøre ting som formatering og filtrering. Selvfølgelig er det verktøy som hjelper deg med å få jobben gjort, men på slutten av dagen, hvis du vil gjøre noen form for tunge tekstanalyser, må du kjenne vanlige uttrykk som baksiden av hånden din.
PowerShell benytter seg av den underliggende.Net-rammen og tar en annen tilnærming, ved hjelp av objekter i stedet for tekst. Objekter er bare en representasjon av noe. De er en samling av deler og handlinger for å bruke dem. La oss ta en titt på deler av en sykkel og hvordan vi kan bruke dem.
Objekter i. Nett er stort sett unntatt for to små forskjeller: "Delene" kalles eiendommer og "Instruksjoner" kalles fremgangsmåter. Hvis vi ønsket å representere en Windows-tjeneste som et objekt, kan vi bestemme at det er hensiktsmessig å beskrive det ved hjelp av tre egenskaper: Tjenestens navn, Stat og Beskrivelse. Vi må også samhandle med tjenesten, slik at vi kan gi objektet en start, en stopp og en pause-metode.
Rørledningen
Det er mange Linux-skjell med en rørledning, slik at du kan sende teksten som en kommando utdataer som input til neste kommando i rørledningen. PowerShell tar dette til neste nivå ved å tillate deg å ta objektene som en cmdlet utgir og sende dem som input til neste cmdlet i rørledningen. Trikset er å vite hvilken type objekt en cmdlet returnerer, noe som er veldig enkelt når du bruker Get-Member-cmdlet.
Get-Service | Get-Member
System.ServiceProcess.ServiceController
Siden PowerShell omhandler objekter og ikke tekst, kan ikke alle cmdlets kobles sammen ved hjelp av rørledningen [1]. Det betyr at vi må finne en cmdlet som ønsker å akseptere et System.ServiceProcess.ServiceController-objekt fra rørledningen.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Get-Help –Name Stop-Service
Get-Help -Name Stop-Service –Full
- Get-Service returnerer ServiceController-objekter
- Stop-Service har en parameter som heter InputObject som aksepterer en eller flere ServiceControllers som input.
- InputObject-parameteren aksepterer pipelineinngang.
Ved hjelp av denne informasjonen kan vi gjøre følgende:
Get-Service -Name ‘Apple Mobile Device’ | Stop-Service
Hjemmelekser
Les opp på objektrørledningen
Hvis du har noen spørsmål, kan du tweet meg @ taybgibb, eller bare gi en kommentar.