Geek School Learning PowerShell Variabler, Input og Output
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. Det 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
- Learning Formatering, filtrering og sammenligning i PowerShell
- Lær at bruge fjernelse i PowerShell
- Brug af PowerShell til at få computeroplysninger
- Arbejder med samlinger i PowerShell
Og hold dig indstillet til resten af serien hele ugen.
Variable
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 giver 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 dollarskiltet bare et lille tip 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".
I PowerShell kan du se alle de variabler, du har oprettet i den variable PSDrive.
gci variabel:
Hvilket betyder at du også kan slette en variabel fra shellen når som helst:
Fjern-Varevariabel: \ Fornavn
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 have 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.
Bliv ikke fanget!
Variabler i PowerShell er svagt skrevet som standard, hvilket betyder, at de kan indeholde nogen form for data, det ser ud til at få 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 i.
$ a + $ b = 30
Mens
$ b + $ a = 2010
I det første eksempel er den første operand et helt tal, $ a, så PowerShell mener, at du 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. Flere avancerede scripters forhindrer denne form for gotcha ved at caste variablen til den type, de forventer.
[int] $ nummer = 5
[int] $ Number = '5'
Ovennævnte vil begge resultere i Nummervariablen indeholdende et heltal objekt med en værdi på 5.
Input og Output
Fordi PowerShell er beregnet til at automatisere ting, vil du 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 cmdlet Read-Host. Brug af det er virkelig simpelt:
$ FirstName = Læs-Host -Prompt 'Indtast dit fornavn'
Uanset hvad du indtaster vil du så gemme i variablen.
Skriveudgang er lige så let med cmdlet Skriv-udgang.
Skriv-Output "How-To Geek Rocks!"
Kom med os i morgen, hvor vi binder alt, hvad vi har lært sammen!