27Jul

Geek School: Learning PowerShell Variabler, Input och Output

Eftersom vi flyttar oss från att helt enkelt springa kommandon och gå in på att skriva fullblåsta skript, behöver du en tillfällig plats för att lagra data. Det här är variablerna som kommer in.

Var noga med att läsa tidigare artiklar i serien:

  • Lär dig hur du automatiserar Windows med PowerShell
  • Lär dig använda Cmdlets i PowerShell
  • Lär dig hur du använder objekt i PowerShell
  • Lär dig formatering, filtrering och jämförelse iPowerShell
  • Lär dig att använda Remoting i PowerShell
  • Använda PowerShell för att få datorinformation
  • Arbeta med samlingar i PowerShell

Och håll dig uppdaterad för resten av serien hela veckan.

Variabler

De flesta programmeringsspråk tillåter användningen av variabler, som helt enkelt är behållare som håller värden. I PowerShell har vi också variabler och de är väldigt lätta att använda. Så här skapar du en variabel som heter "FirstName" och ger den värdet "Taylor".

$ FirstName = "Taylor"

Det första som de flesta människor tycks fråga är varför vi lägger ett dollar tecken framför namnen på variablerna, och det är faktiskt en mycket bra fråga. Egentligen är dollarns tecken bara en liten aning till skalet som vi vill komma åt innehållet i variabeln( tänk vad som finns i behållaren) och inte själva behållaren. I PowerShell innehåller inte variabla namn dollartecknet, vilket betyder att variabelnamnet i det ovanstående exemplet är "FirstName".

I PowerShell kan du se alla variablerna du skapat i variabeln PSDrive.

gci variabel:

Vilket innebär att du kan ta bort en variabel från skalet när som helst:

Remove-Item Variable: \ FirstName

Variablerna behöver inte heller innehålla ett enda objekt;du kan lika enkelt lagra flera objekt i en variabel. Om du till exempel vill spara en lista med löpande processer i en variabel kan du bara tilldela resultatet av Get-Process.

$ Proc = Get-Process

Tricket att förstå detta är att komma ihåg att den högra sidan av jämliksignalen alltid utvärderas först. Det betyder att du kan ha en hel rörledning på höger sida om du vill.

$ CPUHogs = Get-Process |Sortera CPU-Avslutande |välj -Första 3

CPUHogs-variabeln innehåller nu de tre körprocesserna som använder mest CPU.

När du har en variabel som innehåller en samling objekt, finns det några saker att vara medveten om. Om du till exempel ringer till en metod på variabeln kommer det att kallas på varje objekt i samlingen.

$ CPUHogs. Kill()

Vilket skulle döda alla tre processerna i samlingen. Om du vill komma åt ett enda objekt i variabeln behöver du behandla den som en matris.

$ CPUHogs [0]

Genom att göra det får du det första objektet i samlingen.

Får inte fångas!

Variabler i PowerShell är svagt skrivna som standard, vilket betyder att de kan innehålla någon form av data, det verkar som att fånga nya kommenderar till PowerShell hela tiden!

$ a = 10

$ b = '20'

Så vi har två variabler, en innehåller en sträng och den andra ett heltal. Så vad händer om du lägger till dem? Det beror faktiskt på vilken ordning du lägger till dem.

$ a + $ b = 30

Medan

$ b + $ a = 2010

I det första exemplet är den första operand ett heltal, $ a, så PowerShell tror attdu försöker göra matte och försöker därför konvertera alla andra operander till heltal. I det andra exemplet är den första operand en sträng, så PowerShell konverterar bara resten av operandorna till strängar och sammanfogar dem. Fler avancerade scripters förhindrar denna typ av gotcha genom att casta variabeln till den typ de förväntar sig.

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

Ovanstående kommer både att resultera i Nummervariabeln som innehåller ett heltalobjekt med ett värde av 5.

Ingång och utgång

Eftersom PowerShell är avsedd att automatisera saker, du kommer att vilja undvika att uppmana användare att få information om möjligt. Med det sagt kommer det att finnas tillfällen där du inte kan undvika det, och för de tiderna har vi cmdlet Read-Host. Att använda det är väldigt enkelt:

$ FirstName = Read-Host -Prompt 'Ange ditt förnamn'

Oavsett vad du anger kommer du att spara i variabeln.

Skrivarutgången är lika lätt med cmdlet Skriv ut.

Skriv ut "How-To Geek Rocks!"

Följ med oss ​​imorgon där vi knyter allt vi har lärt oss tillsammans!