27Jul

Geek School: Learning PowerShell Variabler, Input og Output

click fraud protection

Da vi bevæger os væk fra blot at køre kommandoer og gå ind i at skrive fuldblåste scripts, skal du have et midlertidigt sted til at gemme data. Dette er her, hvor variabler kommer ind.

Sørg for at læse de tidligere artikler i serien:

  • Lær at automatisere Windows med PowerShell
  • Lære at bruge Cmdlets i PowerShell
  • Lære at bruge objekter i PowerShell
  • Lære formatering, filtrering og sammenligning iPowerShell
  • Lær at bruge fjernelse i PowerShell
  • Brug af PowerShell til at få computeroplysninger
  • Arbejde med samlinger i PowerShell

Og hold dig indstillet til resten af ​​serien hele ugen.

Variabler

De fleste programmeringssprog tillader brugen af ​​variabler, som blot er containere, der indeholder værdier. I PowerShell har vi også variabler, og de er meget nemme at bruge. Sådan oprettes en variabel kaldet "FirstName" og give den værdien "Taylor".

$ FirstName = "Taylor"

Det første, som de fleste mennesker synes at spørge, er, hvorfor vi sætter et dollarskilt foran variablenavnet, og det er faktisk et meget godt spørgsmål. Virkelig er dollartegnet kun et lille hint til skallen, som vi ønsker at få adgang til indholdet af variablen( tænk hvad der er inde i beholderen) og ikke selve containeren. I PowerShell inkluderer variable navne ikke dollarskiltet, hvilket betyder, at variablenavnet i det ovenstående eksempel faktisk er "FirstName".

instagram viewer

I PowerShell kan du se alle de variabler, du har oprettet i variablen PSDrive.

gci variabel:

Hvilket betyder at du kan slette en variabel fra skalen til enhver tid:

Fjern-Variabel: \ FirstName

Variabler behøver heller ikke at indeholde en enkelt genstand;Du kan lige så nemt gemme flere objekter i en variabel. For eksempel, hvis du ønskede at gemme en liste over kørende processer i en variabel, kan du bare tildele det output af Get-Process.

$ Proc = Get-Process

Tricket til at forstå dette er at huske, at højre side af ligestegnet altid evalueres. Det betyder, at du kan få en hel rørledning på højre side, hvis du vil.

$ CPUHogs = Get-Process |Sorter CPU-Afvigende |vælg -First 3

CPUHogs-variablen indeholder nu de tre løbende processer, der bruger den mest CPU.

Når du har en variabel med en samling objekter, er der nogle ting at være opmærksom på.For eksempel vil kalde en metode på variablen få det til at blive kaldt på hvert objekt i samlingen.

$ CPUHogs. Kill()

Hvilket ville dræbe alle tre processer i samlingen. Hvis du vil have adgang til et enkelt objekt i variablen, skal du behandle det som en matrix.

$ CPUHogs [0]

Hvis du gør det, får du det første objekt i samlingen.

Får ikke fanget!

Variabler i PowerShell er svagt indtastet som standard, hvilket betyder at de kan indeholde alle slags data. Det ser ud til at komme nye strømmer til PowerShell hele tiden!

$ a = 10

$ b = '20'

Så vi har to variabler, den ene indeholder en streng og den anden et helt tal. Så hvad sker der, hvis du tilføjer dem? Det afhænger faktisk af hvilken rækkefølge du tilføjer dem.

$ a + $ b = 30

Mens

$ b + $ a = 2010

I det første eksempel er den første operand et helt tal, $ a, så PowerShell mener atdu forsøger at lave matematik og derfor forsøger at konvertere andre operander til heltal også.I det andet eksempel er den første operand en streng, så PowerShell konverterer kun resten af ​​operandene til strenge og sammenkæder dem. Mere avancerede scripters forhindrer denne form for gotcha ved at caste variablen til den type, de forventer.

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

Ovenstående vil begge resultere i Nummervariablen indeholdende et heltalsobjekt med en værdi på 5.

Input og Output

Fordi PowerShell skal automatisere ting, du vil undgå at anmode brugerne om information, hvor det er muligt. Med det sagt vil der være tidspunkter, hvor du ikke kan undgå det, og for de tidspunkter har vi Read-Host-cmdlet. Brug af det er virkelig simpelt:

$ FirstName = Læs-Host -Prompt 'Indtast dit fornavn'

Uanset hvad du indtaster vil du så gemme i variablen.

Udskrivning er lige så let med cmdlet Skriv-udgang.

Skriv-udgang "How-To Geek Rocks!"

Kom med i morgen, hvor vi binder alt, hvad vi har lært sammen!