четверг, 5 июля 2012 г.

Чистка datastore (часть 1)

Возникла необходимость почистить место на datastore. В связи с чем и родились следующие скрипты.

Скрипт №1 - Составление списка всех зарегистрированных виртуальных машин вместе с их дисками
$vCenter = $args[0]

echo 'Connect to vCenter'
Connect-VIServer $vCenter
echo '------------------------------------'

$Report = @()

echo 'Get-VMs'
foreach ($item in Get-VM) {
foreach ($item2 in Get-HardDisk $item) {
$VMInfo = {} | Select VMName,Disk
$VMInfo.VMName = $item.name
$VMInfo.Disk = $item2.filename
$Report += $VMInfo
}
}

$Report = $Report | Sort-Object VMName
IF ($Report -ne "") {
$Report | Export-Csv .\$vCenter.log -NoTypeInformation
}

Disconnect-VIServer -Confirm:$false

Скрипт №2: Составление списка файлов, находящихся на datastore, вместе с их директориями и именами datastore.

$vCenter = $args[0]

echo 'Connect to vCenter'
Connect-VIServer $vCenter

$Report = @()

echo 'Get-VMs'
foreach ($item in get-datastore) {
$item

new-psdrive -location $item -name ds -psprovider VimDatastore -Root "\"

Set-Location ds:\

foreach ($f in Get-ChildItem) {
set-location $f

foreach ($o in get-childitem) {
echo "------------------------file information--------------------------------"
$filelist = {} | Select datastorename,foldername,filename
$filelist.datastorename = $item.Name
$filelist.foldername = $f.Name
$filelist.filename = $o.name
write-host $item.name"; "$f.name"; "$o.name
$report += $filelist
}
}

Set-Location d:\projects\powercli\getvm\

remove-psdrive -name ds
}

# $Report = $Report | Sort-Object VMName
IF ($Report -ne "") {
$Report | Export-Csv .\datastore.log -NoTypeInformation
}

Disconnect-VIServer -Confirm:$false

Вывод всего лишнего в следующей серии, так нет времени на написании скрипта.

Комментариев нет: