0

我遇到以下问题。我有一个 powershell 脚本可以向我发送附有日志文件的电子邮件。唯一的问题是我只需要不为空的日志文件。所以我尝试使用这个脚本:

If ((Get-content "Log.txt") -gt 0 ) {
    $smtp.Send($msg)
    echo "email sent"
    } else {
    echo "File is blank"
    }

似乎这-gt 0对我不起作用。无论我尝试过什么,powershell 仍然会向我发送空日志。那么你能告诉我我哪里错了吗?我也试过这个:

If ((Get-Content $file) -eq $Null) {
    "File is blank"
    } else {
    $smtp.Send($msg)
    echo "email sent"
    }

但它仍然无法正常工作。

先感谢您。

4

1 回答 1

1

Get-Content将读取文件的全部内容 - 只是把它全部扔掉!这是对资源的巨大浪费。

get-item相反,使用或从文件系统本身获取有关文件的信息get-childitem

if ((get-item "log.txt").length -gt 0) {
    do stuff
}

看起来您正在使用一种过时的发送电子邮件的方法。在 PowerShell 2.0 及更高版本中,使用Send-MailMessage- 它更容易使用。实际上,如果您将所有日志文件都放在一个目录中,则可以将其提炼为两行:

$logs = get-childitem -path PATH_TO_LOGS|where-object{($_.length -gt 0) -and !$_.PSIsContainer}|select-object -expandproperty fullname
Send-Mailmessage -attachments $logs OTHER_PARAMETERS_HERE
于 2013-05-16T19:02:03.077 回答