1

私は、ボリューム/ディスクスペースの使用量に関するクラウドウォッチのメトリックを引き出すために探しています。また、以下のaws powershellスクリプトでそれを行うこともできました。ウィンドウとLinuxのボリューム/ディスクのサイズを関連づける方法を出す。コード内のサイズは実際には1つのインスタンスに複数のボリュームが添付されているため正しいサイズを提供していない。LinuxのLinuxとWindowsのAWSボリュームとディスクスペースの使用

提案がありますか?

function GetEC2InstanceName ($instanceId) 
{ 

$tags = (Get-EC2Instance).RunningInstance | Where-Object {$_.instanceId -eq $instanceId} |select Tag 
$tagName = $tags.Tag | Where-Object {$_.Key -eq "Name"} | select -ExpandProperty Value 

return $tagName 

} 

$volumesByInstance = @{} 
$mountByInstance = @{} 

Get-CWMetricList -Namespace 'System/Linux' -MetricName 'DiskSpaceUtilization' | % { 
    $instanceId = ($_.Dimensions | Where-Object {$_.Name -eq 'InstanceId'} | Select -ExpandProperty Value) 
    $mountpath = ($_.Dimensions | Where-Object {$_.Name -eq 'MountPath'} | Select -ExpandProperty Value) 
    $volume = ($_.Dimensions | Where-Object {$_.Name -eq 'Filesystem'} | Select -ExpandProperty Value) 
    if (-not $volumesByInstance.ContainsKey($volume)) { 
     $volumesByInstance[$instanceId] = @($volume) 
     $mountByInstance[$instanceId] = @($mountpath) 

    } else { 
     $volumesByInstance[$instanceId] += $volume 
     $mountByInstance[$instanceId] += $mountpath 

     } 
    } 


$endDate = Get-Date 
$startDate = $endDate.AddDays(-2) 
$period = [TimeSpan]::FromDays(1).TotalSeconds 

$linux = @() 

$volumesByInstance.Keys | % { 
    $instanceId = $_ 
    $mountByInstance[$instanceId] | % { 
    $mountpath = $_ 
    $volumesByInstance[$instanceId] | % { 
     $filesystem = $_ 
    (Get-CWMetricStatistics ` 
      -Namespace 'System/Linux' -MetricName 'DiskSpaceUtilization' ` 
      -Dimension @{name="InstanceId"; value="$instanceId"}, @{name="Filesystem"; value="$filesystem"}, @{name="MountPath"; value="$mountpath"} ` 
      -StartTime $startDate -EndTime $endDate -Period $period ` 
      -Statistics ('Maximum', 'Minimum')).Datapoints | % { 
      $InstanceName = GetEC2InstanceName $instanceId 
      $size = (Get-EC2Volume -filter @( 
    @{ 
    name='attachment.instance-id' 
    values=$instanceId 
    } 
    )) | Select -ExpandProperty Size 
      $linuxObject = New-Object -TypeName PSObject -Prop (@{ 
       'InstanceId'=$instanceId; 
       'Filesystem'=$filesystem; 
       'MountPath'=$mountpath; 
       'Max Utilization (%)'=$_.Maximum; 
       'Min Utilization (%)'=$_.Minimum; 
       'Name'=$InstanceName; 
       'Size'=$size; 
       'Timestamp'=$_.Timestamp 
      }) 

      $linux += $linuxObject 
     } 
    } 
} 

}

答えて

0

試してみてください。

$diskC = Get-WmiObject Win32_LogicalDisk -ComputerName remotecomputer -Filter "DeviceID='C:'" | 
Select-Object Size 

$diskC.Size 
関連する問題