Pesquisei no Google e tentei várias opções diferentes e nenhuma delas fornece o resultado que procuro. Este script produz o e-mail com os dados que estou procurando, mas envia o e-mail independentemente do limite. Gostaria de receber ajuda para saber o que preciso alterar para que o script só envie o e-mail quando a unidade estiver abaixo do limite.
$freeSpaceThreshold = 5GB
#$computerName = "mycomputer"
$drive = "C:"
$driveData = Get-WmiObject Win32_LogicalDisk -ComputerName $Computer -Filter DriveType=3 | Select-Object DeviceID, @{'Name'='Size (GB)'; 'Expression'={[math]::truncate($_.size / 1GB)}}, @{'Name'='Freespace (GB)'; 'Expression'={[math]::truncate($_.freespace / 1GB)}}
if ($driveData.FreeSpace -lt $freeSpaceThreshold)
{
$from = "[email protected]"
$to = "[email protected]"
$subject = "Low Disk Space!"
$body = "Free Space Remaining: " + "$($CDisk.FreeSpace)GB" + " Drive" + $_.deviceid
$smtpServer = "smtp.domain.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($from,$to,$subject,$body)
}
5GB
resolve5368709120
qual é o mesmo valor, mas em bytes em vez de gigabytes.Ao usá-lo em uma comparação, você precisa dividi-lo da mesma forma que divide o valor de comparação. por exemplo
($_.FreeSpace / 1GB)
e($freeSpaceThreshold / 1GB )
. ou você simplesmente não divide porque a propriedade freespace também é bytes.Além disso, faça seus cálculos antes da formatação. eu faria assim:
Então você obterá o resultado correto.
Em primeiro lugar, por que você não está usando o cmdlet de correio interno do PowerShell em vez de usar o namespace de correio .Net?
Em segundo lugar, você está usando variáveis no corpo que não são declaradas e $ PSItem (também conhecido como $ _.) não está sendo passado na postagem do código que você fez.
Por último, você está recebendo tudo porque é especificamente o que você está pedindo.
Ponto de observação: evite o uso de nomes de propriedade, nomes de arquivo, que tenham espaços se você controlar isso. Você só terá dores de cabeça desnecessárias com um monte de citações.
Então, tente desta forma. (A formatação é apenas meu hábito de legibilidade. Então, use o que quiser.)
Atualizado com base no seu comentário sobre autenticação e SSL abaixo
Finalmente consegui um roteiro funcional. Esta é a resposta que eu estava procurando. Espero que ajude os outros.