Ich habe im Internet versucht, einen Weg zu finden, wenn möglich, einen niedrigen Speicherplatz-Alarm von einem Google Mail-Konto an eine freigegebene Mailbox per Power Shell zu senden Frage, die ich geschafft habe, zusammenzufügen.Ein Festplattenspeicherplatzalarm per Powershell per E-Mail versenden
$EmailFrom = "[email protected]"
$EmailTo = "[email protected]"
$SMTPServer = "smtp.gmail.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("Username", "Password");
$Computers = "Local Computer"
$Subject = "Disk Space Storage Report"
$Body = "This report was generated because the drive(s) listed below have less than $thresholdspace % free space. Drives above this threshold will not be listed."
[decimal]$thresholdspace = 50
$tableFragment = Get-WMIObject -ComputerName $computers Win32_LogicalDisk `
| select __SERVER, DriveType, VolumeName, Name, @{n='Size (Gb)' ;e={"{0:n2}" -f ($_.size/1gb)}},@{n='FreeSpace (Gb)';e={"{0:n2}" -f ($_.freespace/1gb)}}, @{n='PercentFree';e={"{0:n2}" -f ($_.freespace/$_.size*100)}} `
| Where-Object {$_.DriveType -eq 3} `
| ConvertTo-HTML -fragment
$regexsubject = $Body
$regex = [regex] '(?im)<td>'
if ($regex.IsMatch($regexsubject)) {$smtpclinet.send($fromemail, $EmailTo, $Subject, $Body)}
Script läuft, aber nichts passiert, wäre jede Hilfe fantastisch !!!
Wenden Sie Divide and Conquer Taktik auf das Debuggen an. Brechen Sie das Skript in Teile und finden Sie heraus, welcher Teil fehlschlägt. Gibt die WMI-Abfrage gute Ergebnisse? Können Sie über Google Mail willkürliche E-Mails senden? – vonPryz
Es gibt Tippfehler, die "Smtpclinet" nicht helfen werden. Warum nicht 'Send-MailMessage' verwenden? Wie auch immer, du bekommst nichts, weil du '$ tableFragment' niemals in' $ Body' zusammenführst. Wenn '$ Body' keine HTML-Tabelle mit Tabellendaten enthält, wird die Mail nie gesendet. –
Ein weiteres Problem für Sie. '$ Body' wird aufgebaut, indem eine Variable' $ trimespace' eingefügt wird. Die '$ thesholdspace'-Variable wird erst gesetzt, nachdem' $ Body' den Wert bereits verwendet hat. –