Hemsida » hur » Geek School Learning PowerShell Variabler, Input och Output

    Geek School Learning PowerShell Variabler, Input och Output

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

    Var noga med att läsa de föregående artiklarna i serien:

    • Lär dig hur du automatiserar Windows med PowerShell
    • Att lära sig använda Cmdlets i PowerShell
    • Lär dig hur man använder objekt i PowerShell
    • Learning Formatering, filtrering och jämförelse i PowerShell
    • Lär dig 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 variabelnamnet, 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 inkluderar inte variabla namn dollarns tecken, vilket betyder att variabelnamnet i det ovanstående exemplet faktiskt är "FirstName".

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

    gci variabel:

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

    Remove-Item Variable: \ Förnamn

    Variabler 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 -avvikande | 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 en metod på variabeln får den att ringas till 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]

    Om du gör det får du det första objektet i samlingen.

    Bli inte fångad!

    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 kommande 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 operanten ett heltal, $ a, så PowerShell tror att du 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åda att resultera i Nummervariabeln som innehåller ett heltalobjekt med ett värde av 5.

    Ingång och utgång

    Eftersom PowerShell är tänkt att automatisera saker, kommer du att vilja undvika att informera användarna om information där det är möjligt. Med det sagt kommer det att finnas tillfällen där du inte kan undvika det, och för dessa gånger har vi läs-värd-cmdletet. 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.

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

    Skrivutgång "Hur-till-Geek Rocks!"

    Gå med i morgon där vi knyter allt vi har lärt oss tillsammans!