Ok, i try add Test-Connection and now the code look likes this:
$html= @' HTML TABLE .alert {{ background-color: #FB1717 }} .statusCom {{ background-color: #FB1717 }} SystemNameDeviceIDVolumeNameSize(GB)FreeSpace(GB)Status {0} '@ $entryTemplate = '{0}{1}{2}{3}{4}{5}{6}' $alertEntryTemplate = '{0}{1}{2}{3}{4}{5}{6}' $statusTemplate = '{0}{1}{2}{3}{4}{5}{6}{7}' Function Get-ComInfo { param( $computers ) #Here LOW Space thresold is lessthan 10% of the total size of the Volume $PercentFree = @{Name="FreeSpace(GB)";Expression={"{0:N1}" -f($_.freespace /1GB)}} Get-WmiObject Win32_LogicalDisk -filter "DriveType=3" -computer $computers | Select SystemName,DeviceID,VolumeName,$PercentFree,@{Name="Size(GB)";Expression={"{0:N1}" -f($_.size/1gb)}},@{name="PercentFree(%)";Expression={int}} } $servers = Get-Content U:\Users\xxx\Desktop\servers.txt $client = $servers if(Test-Connection -ComputerName (Get-Content U:\Users\xxx\Desktop\servers.txt ) -BufferSize 16 -Count 1 -Quiet) { $entries = $servers | % { Get-ComInfo -computers $_ } | % { if ([float]::Parse($_.'FreeSpace(GB)') -le 5) { $alertEntryTemplate -f $_.SystemName, $_.DeviceID, $_.VolumeName, $_.'FreeSpace(GB)', $_.'Size(GB)', $_.'PercentFree(%)', $_.'LOW SPACE' } else { $entryTemplate -f $_.SystemName, $_.DeviceID, $_.VolumeName, $_.'FreeSpace(GB)', $_.'Size(GB)', $_.'PercentFree(%)', $_.'LOW SPACE' } } } else{ $statusTemplate -f $_.SystemName, $_.DeviceID, $_.VolumeName, $_.'FreeSpace(GB)', $_.'Size(GB)', $_.'PercentFree(%)', $_.'LOW SPACE', $_.'Status' } $html -f ($entries -join ' ') | out-file U:\Users\xxx\Desktop\Drivess.html $OutputFile = "U:\Users\xxx\Desktop\Drivess.html" $SMTPServer = "smtp.xxx.com" $EmailFrom = "xxxx@xxx.com" $EmailTo = "xxxx@xxx.com" $Subject = "$computers PROGRES ;))" $body = (Get-Content $OutputFile) $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 25) $SMTPClient.EnableSsl = $false $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("xxx", "xxx"); $MailTextT = Get-Content -Path U:\Users\xxx\Desktop\Drivess.html -Raw $msg = New-object Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $body) $msg.IsBodyHTML = $true $SMTPClient.Send($msg) In html i add this: .statusCom {{ background-color: #FB1717 }} ` And: ` $statusTemplate = '{0}{1}{2}{3}{4}{5}{6}{7}' `
And i have more than one computer and one is offline in my servers.txt it i get this error:
` Get-WmiObject : Serwer RPC it is offline. (Expectiob HRESULT: 0x800706BA) At U:\Users\xxx\Desktop\test.ps1:36 char:1 + Get-WmiObject Win32_LogicalDisk -filter "DriveType=3" -computer $comp ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException + FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand `
If i have one computer and it is offline a get this:
What i do wrong?