2016-03-21 17 views
0

VMS ve SCVMM'den gelen PowerShell betiğini kullanan özniteliklerinin listesini alıyorum. Bir VM'nin bir günde veya 1 saat içinde ne kadar süre kapatıldığını hesaplamak istiyorum. Lütfen kapalı kaldığında her bir VM için kapanma süresini nasıl hesaplayacağımı bana bildirin. Komut dosyası her 1 saatte çalışıyor.SCVMM için Powershell betiği

Scriptim aşağıda.

# CHANGE 
# Specify the VMM Server 
#Write-Host “Connecting to VMM server.....” 
$VMMServer="calo-infvmm-01.calocosn.local" 
$a = ((get-date).ToUniversalTime()).ToString("yyyyMMddTHHmmss") 

$clouds = Get-SCCloud -VMMServer $VMMServer 

#Write-Host “Connected to VMM server successffully..” 

$vmHeader = [string]::Concat("VMId",",","SubscriptionId",",","VMName",",","OperatingSystem",",","Memory(MB)",",","CPUCount",",","DiskUsed(GB)",",","DiskAllocated(GB)",",","StorageClassification",",","Owner",",","CreationTime",",","SampleTime",",","Status") 
Write-Output $vmHeader 

ForEach ($cloud in $clouds) 
{ 
    $VMs = Get-scVirtualMachine -Cloud $cloud 
    ForEach ($VM in $VMs) 
    { 
     #if ($VM.Name -ne "TestCCE") 
     #{ 
     # continue; 
     #} 
     $size = 0 
     $maxSize = 0 
     $classification = "Standard" 
     #Write-Output $VM 
     ForEach ($disk in $VM.VirtualHardDisks) 
     { 
      $classification = $disk.Classification 
      $size += $disk.Size/1gb 

      $parentDisk = $disk.ParentDisk 
      while($parentDisk) 
      { 
      $size += $parentDisk.Size/1gb 
      $parentDisk = $parentDisk.ParentDisk 
      } 

      $maxSize += $disk.MaximumSize/1gb 
     } 
     # CHANGE 
     # After the test works, we will acquire additional variables from VMM.   
     $vmText = [string]::Concat($vm.ID,",",$vm.UserRoleID,",",$vm.Name,",",$vm.OperatingSystem,",",$vm.Memory,",",$vm.CPUCount,",",$size,",",$maxSize,",",$classification,",",$vm.Owner,",",$vm.CreationTime,",",$a,",",$vm.Status) 
     Write-Output $vmText 
    } 
} 
+0

Belirtildiği gibi, durumu alıyorum, ancak VM'nin kapalı olduğu süreyi vermiyor. Yani bir VM 2 saat boyunca 1 saat daha kapalıydı. – Hemant

cevap

0

Ne yazık ki bu kullanılan cmdlet'indeki tarafından döndürülen bir değeri değil mümkün değildir, ne de bir VM çevrimdışı ne kadar süredir gösterecektir bulabilirsiniz orada biridir.

+0

Cevabınız için teşekkürler. Powershell – Hemant

+0

'u kullanarak dinamik olarak hesaplamanın başka bir yolu, aradığınız sonuçları elde etmenin tek yolu gerçekten pratik değildir, her saniye veya dakikadaki powershell'i çalıştırmanız ve durumu okumak için getirmeniz gerekir. çevrimdışı tarih çeşit bir çıkış dosyasına yazmak, ama yine bu gerçekten pratik değildir, bunu yapmak için bazı izleme yazılımları yatırım tavsiye ederim, ya da belki bunu yapabileceğini bazı ücretsiz yazılımlar var, orada seçenekler var, ama ne yazık ki ben Powershell'in doğru olduğuna inanma. –

İlgili konular