5 Cmdlets för att få dig igång med PowerShell
PowerShell blir snabbt det föredragna skriptspråket och CLI av Power Users samt IT Pros. Det är väl värt att lära sig några kommandon för att komma igång, så vi har 5 användbara cmdlets för att du ska kunna lära dig idag.
Get-Command
Get-Command är en av de mest användbara cmdletsna i hela PowerShell, eftersom det hjälper dig att ta tag i PowerShell genom att låta dig söka efter vissa cmdlets. Att använda Get-Command på egen hand är visserligen inte särskilt användbart eftersom det bara kommer att spita ut alla kommandon som PowerShell har.
Men härvid kan vi se att de föremålen som PowerShell-utgångar har både egenskapen Namn och en modulnamn. Med hjälp av den här informationen kan vi finska vår sökning genom att söka efter cmdlets som innehåller vissa termer. Till exempel om jag ville hitta alla cmdlets som innehåller ordet "IP" kunde jag göra det här:
Get-Command-Name * IP *
Som du kan se får vi fortfarande en hel del resultat, vårt nästa alternativ är att söka inom en viss modul. I vårt fall väljer jag NetTCPIP-modulen.
Get-Command -Module NetTCPIP-Name * IP *
Få hjälp
När du väl har hittat cmdletet letar du efter Get-Command, du kommer att vilja veta syntaxen och hur du kan använda den specifika cmdleten. Det här är där Get-Help kommer in, om du någonsin har använt kommandoraden i Windows har du förmodligen gjort något så här:
ipconfig /?
Jo det fungerar inte i PowerShell, det beror på att i PowerShell används ett mellanslag för att skilja ett kommando från parametrarna. Så istället använder vi Get-Help och skickar ett cmdlets namn till Get-Help som en parameter.
Get-Help Get-Process
Get-medlem
Get-Member tillåter oss att få information om de objekt som en cmdlets returnerar. Fångsten med få-medlem är att den bygger på PowerShells pipeline-funktion, för att visa detta, kommer vi att kunna använda Get-Process cmdlet.
Som du kan se PowerShells resultat visar vi några av egenskaperna, som du kan se högst upp i varje kolumn. Det första problemet är att medan de är de egenskaper du kanske letar efter det mesta, finns det fortfarande fler av dem. Det andra problemet är att det inte visar några metoder som vi kan ringa på objektet. För att se metoder och egenskaper kan vi leda vår produktion till Get-Member, så här:
Get-Process | Get-medlem
Medan det kanske inte betyder något för dig just nu måste du förr eller senare använda Get-Member, och ju tidigare du lär dig att använda det bättre. Som ett exempel, med hjälp av informationen från produktionen kunde vi göra något sånt:
Start-Process notepad.exe
$ NotepadProc = Get-Process-Name anteckningsblock
$ NotepadProc.WaitForExit ()
Start-Process calc.exe
Det skriptet kommer att starta anteckningsblock, det tilldelar sedan utmatning av "Get-Process-Name notepad" till $ NotepadProc-variabeln, då kallar vi WaitForExit-metoden på $ NotepadProc vilket gör att skriptet pausar tills du stänger anteckningsblocket, när du har stängt anteckningsblocket då kommer kalkylatorn att starta.
$ _ (Aktuellt pipelineobjekt)
Medan inte exakt en cmdlet är det en av de mest använda specialvariablerna i PowerShell. Det officiella namnet på $ _ är "det aktuella pipelineobjektet". Den används i skriptblock, filter, processklausulen av funktioner, var-objekt, föregångsobjekt och växlar. Det är emellertid lättare att förklara med ett exempel som leder oss till vårt nästa och sista cmdlet, Where-Object.
Var-Object
Var-objekt gör exakt vad det låter som det väljer ett objekt baserat på om det uppfyller vissa kriterier. Detta kommer att samla $ _, och de egenskaper vi kan se med hjälp av Get-Member. För att demonstrera detta kommer vi att leda utmatningen från Get-Process till cmdlet-var-objektet.
Get-Process | Var-objekt $ _. Namn -eq "iexplore"
Så vad händer här frågar du? Tja, det första vi gör är att få en lista över processer på vår dator och passera utgången (med | karaktären) till vårt cmdlet Where-Object-objekt, vilket tar ett manusblock som en parameter. Skriptblocket (definierat av de krökta axlarna) instruerar cmdlets där objektet objekt att bara välja objekt där deras namnparameter är lika med "iexplore", och så får vi bara en lista över de IE-instanser som körs. Det är allt som finns där, ha kul!