27Jul

Geek School: Learning PowerShell Variabler, Input og Output

click fraud protection

Da vi beveger oss vekk fra bare å kjøre kommandoer og gå inn i å skrive fullt blåste skript, trenger du et midlertidig sted å lagre data. Dette er hvor variabler kommer inn.

Husk å lese de forrige artiklene i serien:

  • Lær hvordan du automatiserer Windows med PowerShell
  • Lær å bruke Cmdlets i PowerShell
  • Lær hvordan du bruker objekter i PowerShell
  • Læringsformatering, filtrering og sammenligning iPowerShell
  • Lær å bruke fjerning i PowerShell
  • Bruke PowerShell til å få datamaskininformasjon
  • Arbeide 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 egentlig er "FirstName" i eksemplet ovenfor.

instagram viewer

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-Variabel: \ FirstName

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 å fange nye kommende 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

Mens

$ b + $ a = 2010

I det første eksemplet er den første operand et heltall, $ a, slik PowerShell mener atdu prøver å gjøre matte og prøver derfor å konvertere 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] $ Number = 5
[int] $ Number = '5'

Ovenstående vil begge resultere i Nummervariabelen som inneholder et heltallobjekt med en verdi på 5.

Inngang og utgang

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

$ FirstName = Les-Host -Prompt 'Skriv inn fornavnet'

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

Skriveutgang er like lett med cmdlet Skriv-utgang.

skrive-utgang "How-To Geek Rocks!"

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