2016-03-21 13 views
0

SCVMMのPowerShellスクリプトを使用してVMSとその属性のリストを取得しています。 VMが1日または1時間にどれだけオフになったかを計算したい。 スイッチがオフになっている場合の各VMのスイッチオフ時間を計算する方法を教えてください。以下のスクリプトは1時間ごとに実行されています。SCVMMのPowershellスクリプト

以下は私のスクリプトです。

# 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

私が言及したように、私はステータスを取得していますが、VMがオフになっている時間を与えていません。私は1つのVMが2時間、別の1時間にオフだったことを意味します。 – Hemant

答えて

0

残念ながら、それは使用コマンドレットによって返された値ではありませんので、これは可能ではない、でも私はVMがオフラインになっている時間が表示されます見つけることができるものがあります。

+0

あなたの答えをありがとう。 powershellを使って動的にそれを計算する方法は他にもありません。 – Hemant

+0

あなたが探している結果を得る唯一の方法は本当に実用的ではないでしょう。あなたは毎秒powershellを実行し、ステータスを読むためにそれを取得し、オフラインで日付の出力ファイルを並べ替えることもできますが、これは実際には実用的ではありません。これを行うための監視ソフトウェアに投資することをお勧めします。または、フリーウェアを探して、そこにオプションがあります。 PowerShellが正しいとは思わない。 –

関連する問題