Ett e-postexempel
Det är nog enklast att förklara hur det fungerar med ett exempel, låt oss se på följande kommandorad:
Get-Mailbox | Sort Size | Select –first 100 | Move-Mailbox Server2
Här ser vi en åtgärd i Exchange som är mycket enkel att göra med Powershell, men som troligen skulle vara mycket svår eller omöjlig att göra via grafiskt gränssnitt.
Den första cmdleten Get-Mailbox är ett kommando som hämtar en lista på alla Exchange-brevlådor som finns i hela domänen. Listan kan vara mycket lång, kanske flera tusen brevlådor. Den vidarebefordras via tecknet | som används för att skicka in data från ett kommando till ett annat. I skriptsammanhang brukar tecknet kallas för pipeline.
Kommandot Sort Size sorterar listan i storleksordning med de största brevlådorna överst.
Den sorterade listan skickas vidare in i kommandot Select –first 100 som kortar ner listan till att innehålla bara de 100 största brevlådorna.
Denna ytterligare sorterade lista skickas till sist in i kommandot Move-Mailbox Server2 vilket innebär att de brevlådor som är med i den filtrerade listan flyttas över till en annan Exchange-server med namn-et Server2.
Det här exemplet visar styrkan i Powershell. Med en kort kommandorad har vi gjort en hyggligt komplex operation på ett enkelt sätt.
Filtrera på Örebro
Låt oss titta på ett annat exempel där vi filtrerar en sökning för att hitta en specifik typ av objekt.
Get-Mailbox | Where-Object {$_.Office -eq ”Örebro”} | Set-Mailbox -IssueWarningQuota 2.8Gb -ProhibitSendQuota 3Gb
Här plockar vi först ut samma kompletta lista som i det första exemplet. Sedan filtrerar vi det med Where-Object {$_.Office -eq “Örebro”} så att den endast innehåller objekt från AD där värdet ”Office” har värdet Örebro.
På örebroarna sätter vi sedan restriktioner för hur stora brevlådorna får bli med Set-Mailbox -IssueWarningQuota 2.8Gb -ProhibitSendQuota 3Gb som gör att en varning skickas till användaren när hans låda blir 2,8 gigabyte stor och att vid 3 gigabyte stor låda kan han eller hon inte längre skicka några brev.
Få koll på stora lådor
Låt oss också titta på ett annat exempel som är ganska efterfrågat:
Get-MailboxServer | Get-MailboxStatistics | sort totalitemsize -desc | select displayname,itemcount,totalitemsize | ConvertTo-HTML -head ”<title>Mailbox Size Report</title>” | Out-File C:\Test.htm
Det här skriptet skapar en lista på de största brevlådorna och väljer ut användarens namn, antal objekt i lådan och hur stor låda han eller hon har. Den informationen sparas sedan i en html-fil som lätt kan läsas med en webbläsare. Kanske kan man tänka sig att man schemalägger körningen av ett sådant script med Task Scheduler och presenterar rapporten på någon form av intranet? I så fall är det detta kommando som ska schema-
läggas:
PowerShell.exe -PSConsoleFile ”C:\Program Files\Microsoft\Exchange Server\Bin\ExShell.psc1” -Command ”./StorleksRapport.ps1”
Här startar vi Powershell med ett argument kallat -PSConsoleFile som inkluderar rätt modul som innehåller våra Exchange-cmdlets. Vi skickar förstås också med information om vilket .ps1-script det är som ska köras.
Utöka Powershell
Powershell är inte en statisk installation. Företag som utvecklar produkter i dag bör överväga att skapa egna cmdlets för att ge användarna av produkten möjlighet att enklare automatisera dess funktioner. Till exempel har VMware egna cmdlets som används för att hantera Vsphere, och Quest har cmdlets för hantering av deras vdi-produkt Vworkspace.
Innehållsförteckning
- Azure och Azure IaaS: Övergripande namn på Microsofts molntjänster för utvecklare och it-proffs. Har hittills varit en plattform att placera webbaserade applikationer på (paas, platform as a service) men i och med den nya rollen virtual machines finns också en iaas-tjänst (infrastructure as a service), där man kan placera traditionella virtuella servrar.
- cmdlet: Enstaka kommando i Powershell. Exempel: Move-Mailbox eller New-AzureVM.
- ISE, Integrated Scripting Environment: Microsofts grafiska utvecklingsverktyg för Powershell.
- | (pipeline): Tecken som används för att skicka data mellan olika cmdlets. Kallas pipeline, pipe, vertikalis eller lodrätt streck.
- Powershell: Kommandoradsbaserat skriptspråk som kan genomföra och automatisera åtgärder i olika produkter baserat på avancerade filtreringsmöjligheter.
- VMM, Virtual Machine Manager: Del-produkt i Microsoft System Center för att hantera interna virtuella miljöer.
- växel (även argument, flagga, option): Anger hur ett kommando ska bete sig. Det finns bara ett visst antal förutbestämda växlar som kan användas i ett kommando.