Email 如何将电子邮件命令排队,直到连接到网络
在我的PowerShell代码中,如果在执行命令时在某个目录中发现意外文件夹,我将发送一封电子邮件。 这已经起作用了,但我需要知道的是,如果笔记本电脑没有连接到网络,如何将电子邮件排队。一旦笔记本电脑具有网络连接,然后发送电子邮件Email 如何将电子邮件命令排队,直到连接到网络,email,powershell,Email,Powershell,在我的PowerShell代码中,如果在执行命令时在某个目录中发现意外文件夹,我将发送一封电子邮件。 这已经起作用了,但我需要知道的是,如果笔记本电脑没有连接到网络,如何将电子邮件排队。一旦笔记本电脑具有网络连接,然后发送电子邮件 if ($item.Attributes -eq "Directory") { if ($ip=get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -g
if ($item.Attributes -eq "Directory")
{
if ($ip=get-WmiObject Win32_NetworkAdapterConfiguration|Where {$_.Ipaddress.length -gt 1})
{
Send-MailMessage -SmtpServer $SmtpServer -From "$Admin" -To "$Admin" -Subject "Unexpected folder in $path folder on ""$env:computername""" -Body "There is an unexpected folder in the $path Folder on ""$env:computername"". Check on this ASAP."
continue
}
else
{
#Need to queue this message until we are connected to a network again
Send-MailMessage -SmtpServer $SmtpServer -From "$Admin" -To "$Admin" -Subject "Unexpected folder in $path folder on ""$env:computername""" -Body "There is an unexpected folder in the $path Folder on ""$env:computername"". Check on this ASAP."
continue
}
}
提前谢谢如果您需要简单的延迟,请在循环时使用
...
else
{
while (!(Test-Connection -ComputerName $SmtpServer -Quiet))
{
Start-Sleep 30
}
Send-MailMessage -SmtpServer $SmtpServer ...
continue
}
我刚刚从一位好帮手那里学到了一些东西,多亏了他;)
您可以这样尝试:
while($true) {
if(Test-Connection -ComputerName $smtpserver -Count 1 -Quiet)
{
Write 'The host responded'
Send-MailMessage -SmtpServer $SmtpServer -From "$Admin" -To "$Admin" -Subject "Unexpected folder in $path folder on ""$env:computername""" -Body "There is an unexpected folder in the $path Folder on ""$env:computername"". Check on this ASAP."
break
}
}
while
循环可能会检查连接,或者尝试/catch
将详细信息写入文件,然后当脚本再次运行时检查文件?您正在运行什么操作系统?我是powershell新手,但是,如果这里有人可以将此vbscript转换为powershell,对您来说会更好;)按照相同的原则,但在vbscript==>中,我不能在该块中真正执行while或sleep选项,因为此时需要执行其他功能,这就是为什么我要执行continue,以便完成其他功能。