หลังจากที่เราได้ทำ Report VM กันไปแล้ว ก็มาถึงคราวการทำ Report Datastore ว่ามีการใช้งานไปเท่าไหร่ เหลือพื้นที่เท่าไหร่ และบอกรายละเอียดว่าในแต่ละ Datastore ประกอบไปด้วย VM / Template เท่าไหร่, มี VM PowerOn และ VM PowerOff เท่าไหร่
Design Report
สิ่งที่เราต้องการก็คือ รายงาน Capacity และ Used Space ของ Datastore ทั้งหมด ซึ่งจะบอกถึงรายละเอียดตั้งแต่ Name, Capacity, UsedSpace, VM Space Used, VM Space Provisioned นอกจากนี้ยังบอกถึง VM ที่อยู่ใน Datastore นั้น ได้แก่ VM All, VM PowerOn, VM PowerOff
ความแตกต่างระหว่าง VM Space Used และ VM Space Provisioned คือ Provision เป็นการจองพื้นที่บน Datastore ว่าจะเป็น ( Thin or Thick ) ของ VM ส่วน UsedSpace เป็นการใช้งานจริง ๆ ของ VM
Directory Structure
เราจะใช้ Directory Structure เดิมที่เคยสร้างไว้ โดยจะประกอบไปด้วยโครงสร้างดังนี้
C:\powershell-script
├───Credential/
│ └───vcsa.lab.local.clixml
├───VM-Report/
│ └───Datastore/
└───VM-Script/
├───Configuration.ps1
└───Report-Datastore.ps1
Get Started
- ทำการเพิ่ม Global Variable ขึ้นในไฟล์ Configuration.ps1
# VM-Report
$Global:report_datastore = $root + 'VM-Report\Datastore\Report-Datastore-' + $date + '.csv'
# PowerBI
$Global:powerbi_datastore = $root + 'PowerBI\Dataset\Dataset-Datastore.csv'
- ทำการสร้างไฟล์ Report-Datastore.ps1
. "$PSScriptRoot\Configuration.ps1"
Connect-VIServer -Server $server -Credential $credential
$report = $report_datastore
$powrebi = $powerbi_datastore
$query = Get-Datastore | Where {$_.type -eq "VMFS"} | Select Name,
@{N="CanonicalName"; E={($_.ExtensionData.Info.Vmfs.Extent[0]).DiskName}},
@{N="DisplayName"; E={(Get-ScsiLun -CanonicalName ($_.ExtensionData.Info.Vmfs.Extent[0]).DiskName -VMHost (Get-VIObjectByVIView $_.ExtensionData.Host[0].Key)).ExtensionData.DisplayName}},
Id, CapacityGB,
@{N='Datastore Used Space GB'; E={[math]::Round($_.CapacityGB - $_.FreeSpaceGB)}},
@{N='VM Space Used GB'; E={ [math]::Round((($_ | Get-VM | Select -Expand UsedSpaceGB | measure -Sum).Sum) +
((($_ | Get-Template).ExtensionData.Summary.Storage.Committed | measure -Sum).Sum) / 1GB) } },
@{N='VM Space Provisioned GB'; E={ [math]::Round((($_ | Get-VM | Select -Expand ProvisionedSpaceGB | measure -Sum).Sum) +
((($_ | Get-Template).ExtensionData.Summary.Storage.Uncommitted | measure -Sum).Sum) / 1GB) } },
@{N="VM / All"; E={@($_ | Get-VM).Count}},
@{N="VM / ON"; E={@($_ | Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"}).Count}},
@{N="VM / OFF"; E={@($_ | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"}).Count}},
@{N="VM / Backup"; E={@($_ | Get-VM | Where-Object {$_.Name -like "Backup*"}).Count}},
@{N="Month"; E={$month}},
@{N="Year"; E={$year}} |
Where-Object {$_.DisplayName -notlike 'Local*'} | Sort Name
$query | Export-Csv -Path $report -NoTypeInformation
$query | Export-Csv -Path $powrebi -Append -NoTypeInformation
Disconnect-VIServer -Server $server -Confirm:$false
อ่านเพิ่มเติม : https://bit.ly/2TC5Isg
Leave a Reply