Det är mycket information och många parametrar att hålla koll på i en VMware miljö. Information som både tar tid och kräver administration för att få fram. Tänkt dig att du t.ex. vill ta reda på hur många av dina ”snapshots” som är äldre än 30 dagar eller du kanske vill få en rapport på ”CPU Ready” värdet på samtliga virtuella maskiner eller få en lista på vilka maskiner som har en ansluten och aktiv CD-ROM (detta förhindrar vMotion). Hur löser du detta idag? Ja, all denna information går naturligtvis att få fram genom vCenter men det kan i vissa fall ta onödigt lång tid och man får i många fall checka av vissa saker för varje enskild vm/host. Ok, detta kanske inte är en stor grej om man har 3 ESX hostar och kanske 25 vm:s. Men i miljöer där man kommer upp i volym på både hostar och vm:s så kan denna typ av information bli väldigt tidskrävande att få fram. Att manuellt kontrollera eller editera specifika detaljer för 200-300 virtuella maskiner kan snabbt bli ett tidsödande projekt.

Det är här som finessen och möjligheterna med PowerShell och vSphere PowerCLI verkligen kommer till nytta. Powershell är som ni säkert alla vet ett textbaserat ”shell” – alltså ett kommando-promptsverktyg som till skillnad från de tidigare verktygen som funnits för Windows, t.ex. CMD.exe och Windows Script Host, är helt igenom objektorienterat och bygger på .NET-Framework 2.0. Genom PowerShell och så kallade “command-lets” kan man på ett mycket effektivt sätt administrera och hantera olika komponenter i Windows. vSphere PowerCLI är ett Windows PowerShell interface för vSpheres API. Det innehåller olika PowerShell “command-lets” för att administrera de olika vSphere komponenterna.
Det finns hundratals sidor på nätet med guider och tips på hur man kommer igång med PowerShell och vSphere PowerCLI och jag tänker inte ge mig in på detta utan tänkte istället tipsa er om ett utmärkt script skrivet av mannen bakom www.virtu-al.net. Detta smått fantastiska script innehåller många olika funktioner och skapar automatisk en rapport med en generell översikt av din virtuella infrastruktur och notiser av eventuella punkter kan kräva åtgärder eller tillsyn. Scriptet körs mot din vCenter server och mailar resultatet som en snygg och prydligt html-tabell till valfri e-postmottagare. Följande punkter är exempel på punkter som scriptet kontrollerar och går igenom:
- Number of Hosts
- Number of VMs
- Number of Datastores
- Number of DRS Migrations for the last days
- Snapshots over x Days old
- Datastores with less than x% free space
- VMs created over the last x days
- VMs with No Tools
- VMs with CD-Roms connected
- VMs with CPU ready over x%
- Hosts in Maintenance Mode
- VC Error Events over the last x days
- VC Windows Event Log Errors for the last x days with VMware in the details
- VM active alerts
- Cluster Active Alerts
- vSphere check: Outdated VM Hardware (Less than V7)
- VMs in Inconsistent folders (the name of the folder is not the same as the name)
Detta är endast några av de punkter som scriptet kontrollerar och redogör för i din miljö. För att kunna köra detta script krävs det att du har PowerShell och vSphere PowerCLI installerat på den server som du vill köra detta från (måste inte vara din vCenter server).
PowerShell kan du hämta här. Och VMware vSphere PowerCLI kan du hämta här.
Själva scriptet hittar du här: vCenterDailyReport.txt Döp om scriptet till ‘vCenterDailyReport.ps1′ efter du laddat ner det.
För att få det hela att fungera så börjar du med att installera PowerShell och därefter vSphere PowerCLI. När detta är gjort så sparar du ner scriptet till lämplig plats på servern t.ex. ”c:\vscripts\vCenterDailyReport.ps1″. När detta är gjort kan du starta vSphere PowerCLI prompten via startmenyn. Det kommer att se ut ungefär såhär:

För att sedan köra scriptet skriver du följande vid kommandoprompten:
c:\vscripts\vCenterDailyReport.ps1 vcenterServerNamn
Byt ut ”vcenterServerNamn” mot namnet på din vCenter server eller IP-adress. För att redigera scriptet så att rapporten som genereras hamnar hos rätt mottagare letar du upp raderna so visas nedan och redigerar dess efter din miljö.
# Set the SMTP Server address
$SMTPSRV = ""
# Set the Email address to recieve from
$EmailFrom = ""
# Set the Email address to send the email to
$EmailTo = ""
Det finns även andra variabler att justera efter behov men börja med detta och se till att det att fungerar först. Jag har schemalagt detta script och det körs dagligen i vår miljö och jag har varje morgon en snygg och prydlig rapport som väntar på mig i inkorgen. Vill du schemalägga scriptet gör du det enklast genom att skapa en enkel ”bat-fil” som du sedan kör via windows egna task scheduler.
Lägg följande rad i batfilen för att köra scriptet (redigera eventuella sökvägar efter din egen miljö):
C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -PSConsoleFile
C:\Program\VMware\Infrastructure\vSphere PowerCLI\vim.psc1"
Command "& 'C:\vscripts\vCenterDailyReport.ps1' vcenterServerNamn"
Lycka till med detta mycket kraftfulla och tidsbesparande script.