Microsoft PowerShell är en fantastisk skriptplattform. Microsoft tillhandahåller PowerShell-stöd för nästan alla Windows Server-roller och funktioner. Du kan använda PowerShell för att automatisera upprepade uppgifter samt utföra uppgifter enkelt med hjälp av kommandoraden som du vanligtvis utför med hjälp av GUI-verktygen. Om du till exempel i en produktionsmiljö behöver kontrollera patchningsstatus på Windows-servrar är det mycket enklare att använda PowerShell-skriptmetoden än att ansluta till varje server individuellt och sedan kontrollera patchningsstatusen. Jag är en regelbunden användare av PowerShell och har utformat tusentals PowerShell-skript under mina 18 år av it-erfarenhet.
För PowerShell var det primära skriptspråket för att utföra operativa uppgifter i Windows Visual Basic Scripting. Även om Visual Basic Scripting fortfarande existerar och många IT-administratörer fortfarande föredrar att använda VB-skript, är det värt att nämna att PowerShell minskar kodens komplexitet. Om du till exempel vill kontrollera tjänsterna på en Windows-dator måste du skriva VBScript-koden i ett anteckningsblock, spara filen som .VBS och sedan köra den med hjälp av CSCript-värdfilen. Men genom att använda PowerShell kan du använda en enkel Get-Service cmdlet som kan hjälpa dig att snabbt lista tjänster från en Windows-dator. Om du behöver spara utdata till en fil med hjälp av VB-skript måste du återigen skriva en massa kod i VB-skriptet, vilket innebär att du måste öppna filen och sedan skriva innehållet till filen. PowerShell kräver helt enkelt inte att du öppnar filen innan innehållet som hämtas av en PowerShell-cmdlet kan skrivas till en fil. Allt du behöver göra är att använda cmdlets ”Export-CSV” eller ”Add-Content”.
Cmdlets: PowerShell-skriptens byggstenar
PowerShell erbjuder cmdlets (uttalas ”command-lets”), ibland kallade kommandoradsverktyg, som du kan använda för att få information om operativsystemet, program som är installerade på en Windows-dator, nätverksinformation, patchningsstatus på Windows-datorn och mycket mer. Det är viktigt att notera att PowerShell cmdlets är skrivna i .NET och använder .NET-klasser för att utföra nödvändiga uppgifter. Om du vill ta reda på vilka PowerShell-cmdlets som finns tillgängliga på den lokala datorn utför du det här kommandot:
Get-Command
Get-Command är ett PowerShell-cmdlet som hämtar cmdlets, funktioner, filter och PowerShell-skript som är installerade på den lokala datorn. Ovanstående kommando frågar efter alla PowerShell-moduler som är installerade på den lokala datorn. Om du behöver se alla kommandon som är installerade på den lokala datorn i en ordning utför du det här kommandot:
Get-Command -Type cmdlet | Sort-Object -Property Noun |FT -GroupBy Noun
Tre typer av PowerShell-operationer
Med hjälp av PowerShell kan du utföra tre typer av operationer. De är hämta, ställa in och ta bort. Alla PowerShell-cmdlets som börjar med ”Get” används vanligtvis för att hämta information från Windows-komponenter. Get-ADUser utför till exempel en läshändelse mot Active Directory-databasen för att hämta användarinformation. Några exempel på användning av Get-ADUser PowerShell cmdlet visas nedan:
Get-ADUser -Filter * -SearchBase ”OU=TestUsers,DC=TechGenix,DC=Com”
Ovanstående kommando hämtar alla användarkonton som finns i en organisationsenhet medan kommandot nedan hämtar egenskaper som är kopplade till en enskild Active Directory-användare:
Get-ADUser -Identity JohnThomas -Properties *
PowerShell-cmdlets som börjar med ”Set” används för att redigera information om Windows-komponenter. Genom att använda Set-ADUser kan du till exempel utföra olika operativa uppgifter enligt kommandona nedan:
Set-ADUser -Identity JohnThomas -HomeFolder \\Server1\%UserName%
Med kommandona nedan kan du ställa in e-postegenskaper för användaren JohnThomas.
$ThisUser = Get-ADUser -Identity JohnThomas -Properties Mail
$ThisUser.Mail = [email protected]
Set-ADUser -Instance $ThisUser
Alla PowerShell-cmdlets som börjar med ”Remove” används för att utföra raderingsåtgärder. Remove-ADUser kan till exempel användas för att ta bort en Active Directory-användare enligt nedan:
Remove-ADUser -Identity JohnThomas
Kombinera PowerShell-cmdlets
En av de bästa funktionerna som PowerShell erbjuder är möjligheten att kombinera två eller flera PowerShell-cmdlets i ett enda PowerShell-kommando. Sådana kommandon kallas ibland för enlinjiga PowerShell-kommandon. Om du till exempel behöver ta bort alla inaktiverade användarkonton från Active Directory, kan du kombinera Search-ADAccount och Remove-ADUser PowerShell-cmdlets enligt kommandot nedan:
Search-ADAccount -AccountDisabled | Where {$_.ObjectClass -eq ”User”} | Remove-ADUser
Som du kan se i kommandot ovan utför Search-ADAccount PowerShell cmdlet en sökning i hela Active Directory för att leta efter inaktiverade konton och genom att använda pipe (|)-operatören instruerar du Remove-ADUser att utföra en raderingsoperation endast på de användare som hämtas av Search-ADAccount.
PowerShell aliases
Och även om många PowerShell cmdlets är lätta att läsa och använda, erbjuder PowerShell också en funktion som kallas PowerShell alias. PowerShell är smart nog att komplettera namnet på en PowerShell-cmdlet genom att trycka på Tab-tangenten. Om du har svårt att komma ihåg namnet på PowerShell-cmdlets kan du skapa PowerShell-alias. Du kan till exempel skapa ett alias för PowerShell-cmdletten Get-MailBoxStatistics med kommandot nedan:
New-Alias ShowMB Get-MailBoxStatistics
När du skriver ”ShowMB” i PowerShell-fönstret letar PowerShell efter den cmdlet som är associerad med ShowMB-aliaset och utför den sedan.
Spara information i en CSV-fil
När det gäller att spara information i en CSV-fil sparar PowerShell mycket skriptarbete. PowerShell tillhandahåller cmdlet ”Export-CSV” som du kan använda tillsammans med alla andra PowerShell cmdlets. Som standard visar alla PowerShell-kommandon som du utför den resulterande informationen i PowerShell-kommandofönstret om du inte lägger till Export-CSV i slutet av kommandot som visas i kommandot nedan:
Get-ADUser -Filter * -SearchBase ”OU=TestUsers,DC=TechGenix,DC=Com” | Export-CSV C:\Temp\AllUsersInAnOU.CSV
Bemärk att du i kommandot ovan bara lägger till ”Export-CSV” i slutet av kommandot för att få resultatet exporterat i en CSV-fil.
Som du kan se minskar PowerShell-skript den tid det tar att utföra dagliga operativa uppgifter. PowerShell kan utföra tre operativa uppgifter; Get, Set och Remove och 97 procent av PowerShell cmdlets börjar med dessa tre ord för att enkelt identifiera funktionen hos en PowerShell cmdlet. Vi förklarade också hur enkelt det är att kombinera två cmdlets i ett enda kommando för att göra dina PowerShell-skript effektivare.