A very simple PowerCLI script to gather VM creation dates
  1. Anasayfa
  2. PowerCLI

A very simple PowerCLI script to gather VM creation dates

0

Virtual Machinelerin oluşturulma tarihini bulmak için için aşağıdaki PowerCLI komut dosyasını kullanabilirsiniz.

Bu komut dosyası aracılığı ile yedekten döndüğünüz,clone aldığınız sanal makinaları ve kim tarafından hangi

template kullanıldı bilgisine varana kadar sizlere işlem sonunda bir csv hazırlar ve tüm ihtiyacınız bilgilere ulaşabilirsiniz.

 

 

 

 

 

 

 

 

 

 

 

$vcenter değişkinenine vcenter isminizi yazmanız yeterli olacaktır.

#Enter your vCenter Host below
$vcenter = "your_vcenter_server"
#Enter the CSV file to be created
$csvfile = "VM_Birthdays.CSV"
################################
 
#Load the VMware Powershell snapin if the script is being executed in PowerShell
Add-PSSnapin VMware.VimAutomation.Core -ErrorAction 'SilentlyContinue'
 
#Connect to the vCenter server defined above. Ignore certificate errors
Write-Host "Connecting to vCenter"
Connect-VIServer $vcenter -wa 0
Write-Host "Connected"
Write-Host ""
 
#Check to see if the file exists, if it does then overwrite it.
if (Test-Path $csvfile) {
Write-Host "Overwriting $csvfile"
del $csvfile
}
 
#Create the CSV title header
Add-Content $csvfile "VM,Born on,Creator,Creation Type,Event Message"
 
#Gather all VM's from vCenter
$vms = Get-VM | sort Name
 
foreach ($VM in $vms) {
Write-Host "Gathering info for $VM"
 
#Search for events where the VM was deployed from a template
$vmevents = Get-VIEvent $VM -MaxSamples([int]::MaxValue) | 
Where-Object {$_.FullFormattedMessage -like "Deploying*"} |
Select CreatedTime, UserName, FullFormattedMessage
if ($vmevents)
{
$type = "From Template"
}
 
#If no events were found, search for events where the VM was created from scratch
if (!$vmevents) {
$vmevents = Get-VIEvent $VM -MaxSamples([int]::MaxValue) 
| Where-Object {$_.FullFormattedMessage -like "Created*"} 
|Select CreatedTime, UserName, FullFormattedMessage
Write-Host "Searching by Created"
$type = "From Scratch"
}
 
#If no events were found, search for events where the VM was cloned
if (!$vmevents) {
$vmevents = Get-VIEvent $VM -MaxSamples([int]::MaxValue) 
| Where-Object {$_.FullFormattedMessage -like "Clone*"} 
|Select CreatedTime, UserName, FullFormattedMessage
Write-Host "Searching by Cloned"
$type = "Cloned"
}
 
#If no events were found, search for events where the VM was discovered
if (!$vmevents) {
$vmevents = Get-VIEvent $VM -MaxSamples([int]::MaxValue) 
| Where-Object {$_.FullFormattedMessage -like "Discovered*"} 
|Select CreatedTime, UserName, FullFormattedMessage
Write-Host "Searching by Discovered"
$type = "Discovered"
}
 
#If no events were found, search for events where the VM was connected (typically from Backup Rest)
if (!$vmevents) {
$vmevents = Get-VIEvent $VM -MaxSamples([int]::MaxValue) 
| Where-Object {$_.FullFormattedMessage -like "* connected"} 
|Select CreatedTime, UserName, FullFormattedMessage
Write-Host "Searching by Connected"
$type = "Connected"
}
 
#I have no idea how this VM came to be.
if (!$vmevents) {
Write-Host "No clue how this VM got here!"
$type = "Immaculate Conception"
}
 
#In some cases there may be more than one event found (typically from VM restores). 
This will include each event in the CSV for the user to interpret.
foreach ($event in $vmevents) {
 
#Prepare the entries
$birthday = $event.CreatedTime.ToString("MM/dd/yy")
$parent = $event.Username
$message = $event.FullFormattedMessage
 
#Add the entries to the CSV
$write = "$VM, $birthday, $parent, $type, $message"
Add-Content $csvfile $write
}
}

 

15 yılı aşkın bir süredir Bilgi Teknolojileri sektörünün içerisindeyim. Bilişim sektörü ile alakalı farklı eğitimler sertifikalar edinerek bu sektör içerisin de son 12 yıldır profesyonel olarak çalışmaktayım. Yeditepe Üniversitesi Makine bölümü ve Eskişehir Üniversitesi işletme bölümü mezunuyum. Bilişim sektöründe kurumsal firmalarda, pek çok farklı pozisyonlarda görev aldım.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Hemen ücretsiz üye olun ve yeni güncellemelerden haberdar olan ilk kişi olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir