Как сделать так, чтобы моя таблица отчета о ежедневном дисковом пространстве сортировалась по значениям Freespace% в столбце в порядке убывания - PullRequest
0 голосов
/ 06 июня 2019

Мне бы хотелось, чтобы этот Отчет о дисковом пространстве, который я запускаю каждое утро, отображал результаты в столбце Freespace% в порядке убывания, если кто-нибудь может мне помочь / посоветовать?

Я пытался просматривать онлайн, чтобы найти ответ, но я изо всех сил и также не написал оригинальный код, но внес несколько поправок в исходный код, чтобы он создал отчет, который я хотел.

# Continue even if there are errors 
$ErrorActionPreference = "Continue"; 

# Set your Safe, warning and critical thresholds 
$percentSafe = 100;
$percentWarning = 20; 
$percentCritcal = 10; 

# REPORT PROPERTIES 
# Path to the report 
$reportPath = "\\yh-mfs-file-01\mfs\User Folders\Drew\DiskUsageReports"; 

# Report name 
$reportName = "DiskSpaceRpt_$(get-date -format ddMMyyyy).html"; 

# Path and Report name together 
$diskReport = $reportPath + $reportName 

#Set colors for table cell backgrounds 
$redColor = "#FF0000" 
$orangeColor = "#FBB917" 
$greencolor = "#008000"
$whiteColor = "#FFFFFF" 

# Count if any computers have low disk space.  Do not send report if less 
than 1. 
$i = 0; 

# Get computer list to check disk space 
$computers = Get-Content "\\yh-mfs-file-01\mfs\User 
Folders\Drew\list.txt"; 
$datetime = Get-Date -Format "MM-dd-yyyy_HHmmss"; 

# Remove the report if it has already been run today so it does not 
append to the existing report 
If (Test-Path $diskReport) 
{ 
    Remove-Item $diskReport 
} 

# Cleanup old files.. 
$Daysback = "-7" 
$CurrentDate = Get-Date; 
$DateToDelete = $CurrentDate.AddDays($Daysback); 
Get-ChildItem $reportPath | Where-Object { $_.LastWriteTime -lt 
$DatetoDelete } | Remove-Item; 

# Create and write HTML Header of report 
$titleDate = get-date -uformat "%d-%m-%Y - %A" 
$header = " 
<html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'> 
<title>DiskSpace Report</title> 
<STYLE TYPE='text/css'> 
<!-- 
td { 
font-family: Calibri; 
font-size: 12px; 
border-top: 1px solid #999999; 
border-right: 1px solid #999999; 
border-bottom: 1px solid #999999; 
border-left: 1px solid #999999; 
padding-top: 0px; 
padding-right: 0px; 
padding-bottom: 0px; 
padding-left: 0px; 
} 
body { 
margin-left: 5px; 
margin-top: 5px; 
margin-right: 0px; 
margin-bottom: 10px; 
table { 
border: thin solid #000000; 
}  
--> 
</style> 
</head> 
<body> 
<table width='100%'> 
<tr bgcolor='#548DD4'> 
<td colspan='7' height='30' align='center'> 
<font face='calibri' color='#003399' size='4'><strong>Daily Morning 
Report for $titledate</strong></font> 
</td> 
</tr> 
</table> 
" 
Add-Content $diskReport $header 

# Create and write Table header for report 
$tableHeader = " 
<table width='100%'><tbody> 
<tr bgcolor=#548DD4> 
<td width='10%' align='center'>Server</td> 
<td width='5%'  align='center'>Drive</td> 
<td width='15%' align='center'>Drive Label</td> 
<td width='10%' align='center'>Total Capacity(GB)</td> 
<td width='10%' align='center'>Used Capacity(GB)</td> 
<td width='10%' align='center'>Free Space(GB)</td> 
<td width='5%'  align='center'>Freespace %</td> 
<td width='5%'  align='center'>RAM %</td>
</tr> 
" 
Add-Content $diskReport $tableHeader 

# Start processing disk space 
foreach($computer in $computers) 
{  
$disks = Get-WmiObject -ComputerName $computer -Class Win32_LogicalDisk - 
Filter "DriveType = 3" 
$computer = $computer.toupper() 
foreach($disk in $disks) 
{         
$deviceID = $disk.DeviceID; 
    $volName = $disk.VolumeName; 
[float]$size = $disk.Size; 
[float]$freespace = $disk.FreeSpace;  
$percentFree = [Math]::Round(($freespace / $size) * 100); 
$sizeGB = [Math]::Round($size / 1073741824, 2); 
$freeSpaceGB = [Math]::Round($freespace / 1073741824, 2); 
    $usedSpaceGB = $sizeGB - $freeSpaceGB; 
    $color = $greenColor; 
# Start processing RAM      
$RAM = Get-WmiObject -ComputerName $computer -Class Win32_OperatingSystem
$RAMtotal = $RAM.TotalVisibleMemorySize;
$RAMAvail = $RAM.FreePhysicalMemory;
    $RAMpercent = [Math]::Round(($RAMavail / $RAMTotal) * 100);

# Set background color to Green if ok 
if($percentFree -lt $percentSafe)       
{ 
$color = $greenColor  
}
# Set background color to Orange if ok 
if($percentFree -lt $percentWarning)       
{ 
$color = $orangeColor  
}
# Set background color to Red if space is Critical 
  if($percentFree -lt $percentCritcal) 
    { 
    $color = $redColor 
    }         

# Create table data rows  
$dataRow = " 
<tr> 
    <td width='10%'>$computer</td> 
<td width='5%' align='center'>$deviceID</td> 
<td width='10%' >$volName</td> 
<td width='10%' align='center'>$sizeGB</td> 
<td width='10%' align='center'>$usedSpaceGB</td> 
<td width='10%' align='center'>$freeSpaceGB</td> 
<td width='5%' bgcolor=`'$color`' align='center'>$percentFree</td> 
<td width='5%' align='center'>$RAMpercent</td>
</tr> 
" 
Add-Content $diskReport $dataRow; 
Write-Host -ForegroundColor DarkYellow "$computer $deviceID percentage 
free space = $percentFree"; 
$i++   
} 
}  

# Create table at end of report showing legend of colors for the critical 
and warning 
$tableDescription = " 
</table><br><table width='20%'> 
<tr bgcolor='White'> 
<td width='10%' align='center' bgcolor='#008000'>No Warning</td>   
<td width='10%' align='center' bgcolor='#FBB917'>Warning</td> 
<td width='10%' align='center' bgcolor='#FF0000'>Critical less than 10% 
free space</td> 
</tr> 
" 
Add-Content $diskReport $tableDescription 
Add-Content $diskReport "</body></html>"     
...