0 Replies Latest reply on Feb 25, 2015 7:12 AM by Halukk

    PowerShell ile Datastore larin bulunmasi

    Halukk Lurker

      Herkeze merhaba,

       

      Hepinizin bildigi gibi VMware datastore larin en az %20 sinin bos olmasini oneriyor. Yani eger Datastore kapasitesi 1TB ise bunun en fazla 800GB ini kullanip 200GB ini bos birakmaliyiz. 2-3 yil VMware in bu onerisine pek kulak vermedim ve datastore lardan birinin tamamen dolmasi nedeniyle datastore in icindeki butun sanal makinalar erisilmez (tamamen calismaz) hale geldi. Bu kariyerinizde yapacaginiz en buyuk hatalardan biri cunku datastore larin icinde is hacmini etkileyebilecek kritik sunucular olabilir ornegin Active Directory, Exchange, SQL, vs. Bu sunuculari  gun ortasinda kapatip datastorun hacmini genisletmek kolay olabilir ama bunu yoneticilere anlatmak hicte kolay degil. Boyle bir hatayi yasamamak icin asagidaki scripti kullanabilirsiniz. Script, vCenter sunucularina baglanarak datastore bilgilerini topluyor ve kullanim alani %22 den az olan datastore larin listesini size email olarak gonderiyor. Boylelikle size datastore u genisletmek icin zaman veriyor.   

       

      #VMware eklentisini PowerShell e eklenmesi ve vCenter a baglanti

      Add-PSSnapin VMware.VimAutomation.Core

      Connect-VIServer LKE1PVCS501 -Protocol https -User 'bremer\svcsnapengine' -Password 'Sn@psh0t1t'

      Function Percentcal {

          param(

          [parameter(Mandatory = $true)]

          [int]$InputNum1,

          [parameter(Mandatory = $true)]

          [int]$InputNum2)

          $InputNum1 / $InputNum2*100

      }

      #Datastore bilgilerinin vCenter dan alinmasi

      $datastores = Get-Datastore | Sort Name

      ForEach ($ds in $datastores)

      {

          if (($ds.Name -match “Shared”) -or ($ds.Name -match “”))

          {

              $PercentFree = Percentcal $ds.FreeSpaceMB $ds.CapacityMB

              $PercentFree = “{0:N2}” -f $PercentFree

              $ds | Add-Member -type NoteProperty -name PercentFree -value $PercentFree

          }

      #Bilgilerin CSV biciminde istenilen yere aktarilmasi

      }

      $datastores | Select Name,@{N=”UsedSpaceGB”;E={[Math]::Round(($_.ExtensionData.Summary.Capacity – $_.ExtensionData.Summary.FreeSpace)/1GB,0)}},@{N=”TotalSpaceGB”;E={[Math]::Round(($_.ExtensionData.Summary.Capacity)/1GB,0)}} ,PercentFree | Export-Csv C:\datastore.csv -NoTypeInformation

       

       

      #Burada olusturalan CSV bize %22 den daha az bos yeri olan datastore lari gosteriyor

      Import-Csv 'C:\datastore.csv' |

      Where-Object { $_.'PercentFree' -lt 22 } |

      Export-Csv 'C:\datastore22.csv' -NoTypeInformation

       

       

      #Daha onceden kaydettigimiz CVS bicimindeki dosyalarin HTML bicmine cevirimi ve email olara gonderilmesi

      $a = "<style>"

      $a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"

      $a = $a + "TH{border-width: 1px;padding: 5px;border-style: solid;border-color: black;background-color:Salmon}"

      $a = $a + "TD{border-width: 1px;padding: 2px 20px 0px 2px;border-style: solid;border-color: black;background-color:Wheat}"

      $a = $a + "</style>"

       

       

      $datastoreInfo = Import-Csv -Path C:\datastore22.csv | ConvertTo-Html -head $a

      $mailBody =

      @"

      Asagidaki liste bos yeri %22 nin altinda olan datastore lari gostermektedir</br>

      Eger mumkunse lutfen datastore lari genisletin</br>

      $datastoreInfo</br>

       

       

      Saygilarimla,</br>

      Haluk Kocaman

      "@

       

       

      Send-MailMessage -Body $mailBody -BodyAsHtml `

      -From "datastores@sirket.com" -To "admin@sirket.com" `

      -Subject "Datastores" -Encoding $([System.Text.Encoding]::UTF8) `

      -SmtpServer "smtpserveripadresi"

       

      Capture.PNG

       

       

      Saygilarimla,

       

      Haluk Kocaman