2016-03-21 8 views
0

Ich erhalte eine Liste von VMS und seinen Attributen mit PowerShell-Skript von SCVMM. Ich möchte berechnen, wie viel Zeit eine VM an einem Tag oder in 1 Stunde ausgeschaltet wurde. Bitte helfen Sie mir, die Ausschaltzeit für jede VM zu berechnen, wenn sie ausgeschaltet ist. Unten läuft das Skript in jeder Stunde.Powershell-Skript für SCVMM

Unten ist mein Skript.

# 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

Wie ich bereits erwähnt habe, bekomme ich den Status, aber es gibt nicht die Dauer, für die VM ausgeschaltet war. Ich meine, eine VM war für 2 Stunden eine weitere 1 Stunde so. – Hemant

Antwort

0

Leider ist dies nicht möglich, da es nicht ein Wert, der vom Cmdlet zurückgegeben wird, noch gibt es eine, die ich, dass zeigt finden wird, wie lange ein VM offline war.

+0

Danke für Ihre Antwort. Jede andere Art der dynamischen Berechnung mit Powershell – Hemant

+0

die einzige Möglichkeit, die Ergebnisse zu erhalten, die Sie suchen, wäre ziemlich unpraktisch, Sie müssten die Powershell jede Sekunde oder Minute ausführen und es erhalten, um den Status zu lesen und wenn es zurückkommt offline schreibe das Datum auf eine Ausgabedatei, aber auch das ist wirklich unpraktisch, würde ich empfehlen, in einige Überwachungssoftware zu investieren, um dies zu tun, oder vielleicht nach etwas Freeware suchen, die es tun würde, gibt es Optionen da draußen, aber leider ich Glauben Sie nicht, Powershell ist der richtige. –

Verwandte Themen