Powershell 无法读取错误日志
当ZIP文件中出现错误时,我下面的脚本将生成错误日志。如果任何一个文件缺少run.bat,Zip文件应该包含三个文件。抛出一个Error.log文件。 我有意在ZIP中创建了一个丢失的文件,脚本应该生成一个error.log,但脚本认为error.log文件为空。 当我尝试使用断点时,脚本工作正常并收到邮件,因为有一个错误,如果我取消断点并运行它,它将不会发送邮件。脚本中有什么错误。谢谢你的支持Powershell 无法读取错误日志,powershell,Powershell,当ZIP文件中出现错误时,我下面的脚本将生成错误日志。如果任何一个文件缺少run.bat,Zip文件应该包含三个文件。抛出一个Error.log文件。 我有意在ZIP中创建了一个丢失的文件,脚本应该生成一个error.log,但脚本认为error.log文件为空。 当我尝试使用断点时,脚本工作正常并收到邮件,因为有一个错误,如果我取消断点并运行它,它将不会发送邮件。脚本中有什么错误。谢谢你的支持 $errorlog = "D:\EmailConnector-Disc Optimus\logs\e
$errorlog = "D:\EmailConnector-Disc Optimus\logs\error.log"
$emailconnecter_log = "D:\EmailConnector-Disc Optimus\logs\connector.log"
#1 print "Running email bat file...... \n";
Write-Host "Running email bat file...... \n"
$prog="cmd.exe"
$params=@('/C','"D:\EmailConnector-Disc Optimus\run.bat"','connector.log')
start-process $prog $params -WorkingDirectory "D:\EmailConnector-Disc Optimus" -RedirectStandardOutput $emailconnecter_log
#$rc = & D:\EmailConnector-Disc Optimus\run.bat > $emailconnecter_log
if (-not $?)
{
Write-Host $rc
$status = "running Daily email bat file failed on $hostname"
Del_Daily
Del_Dat
Send_Mail
exit
}
else
{
Write-Host $rc
Write-Host "Email send sucess fully....."
}
###check for email error log
If (Test-Path $errorlog)
{
$content = Get-Content $errorlog
Write-Host "File is not blank"
Write-Host "File is not blank"
foreach ($line in $content)
{
Write-Host $line
IF ($line | Select-String -Quiet -Pattern '^\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\sERROR')
{
Write-Host $line "Done"
$status = "Daily Email Connector Has ERRORS in the log."
$body = "Check $hostname\logs or $archive_location "
Write-Host $status `n $body
# Send_Mail
$rc = Copy-Item $errorlog $archive_location
$rc = Copy-Item $emailconnecter_log $archive_location
Del_Daily
Del_Dat
exit
}
else{Write-Host "No Error message"}
}
}
else{Write-Host "File is blank"}
你有我们看不到的功能(
Del_Daily
,Del_Dat
,Send_Mail
)正在做什么,从这里我哪里也看不出来,你可以将数据发送到$errorlog
,这些功能很简单,没有任何问题。$errorlog–
将在Run.bat中生成。我的问题是,是否需要任何命令来释放在error.log文件中写入错误,方法是在下面的代码中使用Run.dat$prog=“cmd.exe”$params=@('/C','D:\EmailConnector Disc Optimus\Run.bat','connector.log')启动进程$prog$params-WorkingDirectory“D:\EmailConnector光盘Optimus“-RedirectStandardOutput$emailconnecter_log
您提供给我们使用的所有信息是,$errorlog
为空。我们现在知道它来自run.bat
。我们不知道日志是如何填充的。您正在将std重定向到其他日志。错误行是否包含在该文件中?您的理解是正确的,run.bat
将生成错误日志,而std out不适用于error.log。run.bat
正在调用某个jar文件,该文件将触发电子邮件功能,如果我们在电子邮件触发中遇到问题,则run.bat
将生成带有一些错误消息的Error.log。我希望你现在能理解我的问题