Hjemmeside » hvordan » Geek School Learning PowerShell Variabler, Input og Output

    Geek School Learning PowerShell Variabler, Input og Output

    Når vi beveger oss fra bare å kjøre kommandoer og går inn i å skrive fullblåste skript, trenger du et midlertidig sted å lagre data. Det er her variabler kommer inn.

    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
    • Lær å bruke Remoting i PowerShell
    • Bruke PowerShell til å få informasjon om datamaskinen
    • Arbeider med samlinger i PowerShell

    Og hold deg innstilt for resten av serien hele uken.

    variabler

    De fleste programmeringsspråk tillater bruk av variabler, som bare er beholdere som holder verdier. I PowerShell har vi også variabler, og de er veldig enkle å bruke. Slik lager du en variabel som heter "FirstName" og gir den verdien "Taylor".

    $ FirstName = "Taylor"

    Det første de fleste synes å spørre er hvorfor vi legger et dollarskilt foran variablene, og det er faktisk et veldig godt spørsmål. Virkelig, dollartegnet er bare et lite hint på skallet som vi ønsker å få tilgang til innholdet i variabelen (tenk hva som er inne i beholderen) og ikke selve beholderen. I PowerShell inkluderer variable navn ikke dollarskiltet, noe som betyr at variabelenavnet i det ovennevnte eksemplet egentlig er "FirstName".

    I PowerShell kan du se alle variablene du har opprettet i variabelen PSDrive.

    gci variabel:

    Som betyr at du kan slette en variabel fra skallet når som helst:

    Fjern-elementvariabel: \ Fornavn

    Variabler trenger heller ikke å inneholde et enkelt objekt; Du kan like enkelt lagre flere objekter i en variabel. Hvis du for eksempel vil lagre en liste over kjørende prosesser i en variabel, kan du bare tilordne den utgangen av Get-Process.

    $ Proc = Get-Process

    Trikset for å forstå dette er å huske at høyre side av like-tegnet alltid er vurdert først. Dette betyr at du kan ha en hel rørledning på høyre side hvis du vil.

    $ CPUHogs = Get-Process | Sorter CPU-Nedbryting | velg -First 3

    CPUHogs-variabelen vil nå inneholde de tre kjørende prosessene som bruker mest CPU.

    Når du har en variabel som holder en samling objekter, er det noen ting å være klar over. Hvis du for eksempel kalder en metode på variabelen, vil det bli kalt på hver gjenstand i samlingen.

    $ CPUHogs.Kill ()

    Som ville drepe alle tre prosessene i samlingen. Hvis du vil ha tilgang til et enkelt objekt i variabelen, må du behandle det som en matrise.

    $ CPUHogs [0]

    Å gjøre det vil gi deg det første objektet i samlingen.

    Ikke bli fanget!

    Variabler i PowerShell er svakt skrevet som standard, noe som betyr at de kan inneholde noen form for data, dette ser ut til å få nye komme til PowerShell hele tiden!

    $ a = 10

    $ b = '20'

    Så vi har to variabler, en inneholder en streng og den andre et heltall. Så hva skjer hvis du legger til dem? Det avhenger faktisk av hvilken rekkefølge du legger til dem.

    $ a + $ b = 30

    Samtidig som

    $ b + $ a = 2010

    I det første eksemplet er den første operand et heltall, $ a, så PowerShell mener at du prøver å gjøre matte og derfor prøver å konvertere noen andre operander til heltall også. I det andre eksemplet er den første operand en streng, så PowerShell konverterer bare resten av operandene til strenger og sammenkaller dem. Mer avanserte scripters forhindrer denne typen gotcha ved å kaste variabelen til typen de forventer.

    [int] $ tall = 5
    [int] $ Number = '5'

    Ovennevnte vil begge resultere i tallvariabelen som inneholder et heltallobjekt med en verdi på 5.

    Input og Output

    Fordi PowerShell er ment å automatisere ting, vil du unngå å spørre brukerne om informasjon der det er mulig. Med det sagt vil det være tider hvor du ikke kan unngå det, og for de gangene har vi Read-Host-cmdlet. Å bruke det er veldig enkelt:

    $ FirstName = Les-Host -Prompt 'Skriv inn ditt fornavn'

    Uansett hva du skriver inn, blir du deretter lagret i variabelen.

    Skriveutgang er like lett med cmdlet Skriv-utgang.

    Skriv-utgang "How-To Geek Rocks!"

    Bli med oss ​​i morgen hvor vi knytter alt vi har lært sammen!