VMware Global Community
Halukk
Contributor
Contributor

PowerShell ile Datastore larin bulunmasi

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

0 Kudos
0 Replies