Powershell 发送附有最后修改文件详细信息的电子邮件?

时间:2021-04-08 17:45:16

标签: powershell powershell-2.0

我正在尝试创建一个 PowerShell,它可以搜索文件夹并发送邮件以获取上次创建的文件名和大小的文件详细信息,电子邮件部分工作正常,但我无法在正文中附加文件大小和名称

Set-Location Y:\It-dept\OracleBkp
$latest = Get-Childitem -file $path | Sort LastWriteTime -Descending | select -First 1
$size = Get-Childitem -file $latest | Select-Object Name, @{Name="MegaBytes";Expression={$_.Length / 1MB}}
$Username  = "<sender email>"
$EmailPassword = "<password>"
$EmailTo = <Receiver Mail> 
$EmailFrom   = <Sender EMail>
$Subject = Oracle Backup 
$Body=  $latest
$Body += $size
$SMTPServer  = "smtp.outlook.com"  
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body) 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword) 
$SMTPClient.Send($SMTPMessage)

以上是发送带有文件名的电子邮件,但正文中未显示大小。 任何支持将不胜感激..提前致谢

1 个答案:

答案 0 :(得分:0)

为什么不这样做...

$TargetPath = 'C:\Temp\OracleBkp.txt'

$latest = Get-Childitem -file $TargetPath | 
Sort-Object -Property LastWriteTime -Descending | 
Select-Object Name, @{
    Name       = 'MegaBytes'
    Expression = {$PSItem.Length / 1MB}
} -First 1
# Results
<#
Name          MegaBytes
----          ---------
OracleBkp.txt         0
#>

$Username               = 'sender emai'
$EmailPassword          = '<password'
$EmailTo                = 'Receiver Mail'
$EmailFrom              = 'Sender EMail'
$Subject                = 'Oracle Backup'
$Body                   = "File details `n $latest"
$SMTPServer             = 'smtp.outlook.com'
$SMTPMessage            = New-Object System.Net.Mail.MailMessage($EmailFrom, $EmailTo, $Subject, $Body)
$SMTPClient             = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl   = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Username, $EmailPassword)
$SMTPClient.Send($SMTPMessage)