Hjemmeside » hvordan » Geek School Learning Hvordan bruke objekter i PowerShell

    Geek School Learning Hvordan bruke objekter i PowerShell

    Forståelse av objekter er et av de grunnleggende konseptene for å "få" PowerShell. Bli med oss ​​når vi undersøker objekter og hvordan de gjør PowerShell bedre enn noe annet skall der ute i dag.

    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 for å hjelpe deg med å få jobben gjort (sed og grep kommer til å tenke), 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å sykkelen 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.

    Du kan se et objekts egenskaper og metoder ved å sende det til Get-Member-cmdlet. Objektene som en PowerShell cmdlet-utganger er i stor grad underliggende typer fra .Net-rammen, men du kan lage dine egne objekter hvis du trenger å bruke et språk som C # eller bruke PSObject-typen.

    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-medlem

    For grunner utenfor denne artiklens omfang er egenskaper og metoder felleskalt klassemedlemmer, noe som forklarer hvorfor du bruker Get-Member-cmdletet for å få en liste over alle metodene og egenskapene et objekt har. Imidlertid returnerer Get-Member-cmdlet også et annet viktig stykke informasjon, den underliggende objekttypen. I ovenstående skjermbilde kan vi se at Get-Service returnerer objekter av typen:

    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

    Legg merke til at det er en cmdlet kalt Stop-Service; la oss ta en titt på hjelpen til det.

    Hent-Hjelp-Navn Stopp-Service

    Det ser ut til at parameteren InputObject tar en rekke ServiceController-objekter som input. Vanligvis, hvis du ser en parameter som heter InputObject, vil den akseptere innspilling fra pipeline, men bare for å være sikker, la oss se på full hjelp for den parameteren.

    Hent-Hjelp-Navn Stopp-Service-Fullt

    Våre mistanker var korrekte. Så på dette punktet vet vi følgende:

    • 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-Navnet 'Apple Mobile Device' | Stopp-service

    Det er alt for denne gangen folkens. Neste gang ser vi på hvordan vi kan formatere, filtrere og sammenligne objekter i rørledningen.

    Hjemmelekser

    • Les opp på objektrørledningen

    Hvis du har noen spørsmål kan du tweet meg @ taybgibb, eller bare gi en kommentar.