Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 无法读取错误日志_Powershell - Fatal编程技术网

Powershell 无法读取错误日志

Powershell 无法读取错误日志,powershell,Powershell,当ZIP文件中出现错误时,我下面的脚本将生成错误日志。如果任何一个文件缺少run.bat,Zip文件应该包含三个文件。抛出一个Error.log文件。 我有意在ZIP中创建了一个丢失的文件,脚本应该生成一个error.log,但脚本认为error.log文件为空。 当我尝试使用断点时,脚本工作正常并收到邮件,因为有一个错误,如果我取消断点并运行它,它将不会发送邮件。脚本中有什么错误。谢谢你的支持 $errorlog = "D:\EmailConnector-Disc Optimus\logs\e

当ZIP文件中出现错误时,我下面的脚本将生成错误日志。如果任何一个文件缺少run.bat,Zip文件应该包含三个文件。抛出一个Error.log文件。 我有意在ZIP中创建了一个丢失的文件,脚本应该生成一个error.log,但脚本认为error.log文件为空。 当我尝试使用断点时,脚本工作正常并收到邮件,因为有一个错误,如果我取消断点并运行它,它将不会发送邮件。脚本中有什么错误。谢谢你的支持

$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。我希望你现在能理解我的问题