我遇到以下问题。 我有一个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"
}
但它仍无效。
提前谢谢。
答案 0 :(得分: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