
이 포럼은 훌륭하며, 제가 생각했던 것보다 자동화하기 더 쉬울 프로세스를 수동으로 수행하는 데 따른 골치 아픈 문제에 대해 도움을 받고 싶습니다.
앱 로그를 업로드하는 공급업체 앱의 명령줄 도구가 있습니다. 하지만 이 도구는 Unix UTC 시간만 소요되며 앱 로그를 업로드하려면 예약된 작업을 하루에 3~4회 실행해야 합니다. 아마도 그날의 모든 로그를 업로드할 수도 있겠지만 스크립트에서 이를 수행하는 방법을 알 수 없기 때문에 여전히 문제가 됩니다. 그래서 하루 종일 모든 로그를 업로드하고 최신 로그만 업로드하는 것에 대해 걱정할 필요가 없습니다.
명령은 제가 시작한 아래에 있는 powershell 스크립트에 있지만 배치 파일로 이 작업을 수행하는 것이 더 쉽다면 이메일을 보내기 위해 blat와 같은 것을 추가하지 않으려고 노력했지만 방법을 알 수 없었습니다. 이메일로 보내야 하는 배치 스크립트로 작업 결과를 얻으려면
아래의 "IEX"는 전체 명령이며, 예약된 작업이 마지막으로 실행된 시간을 가져오는 것보다 쉬운 경우 UTC 시간을 입력해야 하는 곳입니다. 어쨌든 이것이 가장 안전한 옵션입니다. 그런 다음 끝에 있는 "1 1"은 공급업체가 업로드 옵션을 추가하는 데 필요한 매개변수입니다.
로그 업로드를 위한 현재 날짜와 시간을 어떻게 입력합니까? 매일 사람이 모이는 오전 12시 1분(동부)부터 오후 11시 59분(동부)과 같은 시간이면 괜찮을까요?
# "iex" is an alias for the invoke-expression cmd
iex c:\path_to_exe\myprog.exe -a 1379300570 1379300570 1 1
# $? lets us know if the previous command was successful or not
# $LASTEXITCODE gives us the exit code of the last Win32 exe execution
if (!$? -OR $LASTEXITCODE -gt 0)
{
$smtpServer = "smtp.mydomain.com"
$fromAddress = "[email protected]"
$toAddress = "[email protected]"
$subject = "FAILURE"
$msgBody = "Trouble with Task"
# Use these variables if auth for the SMTP server is required!
$senderCreds = new-object System.Net.networkCredential
$senderCreds.UserName = "senderusername"
$senderCreds.Password = "senderpwd"
$smtpClient = new-object Net.Mail.SmtpClient($smtpServer)
$smtpClient.Credentials = $senderCreds
$smtpClient.Send($fromAddress,$toAddress,$subject,$msgBody)
}
답변1
현재 날짜/시간을 Unix 타임스탬프로 얻으려면, 시작 이후 경과한 초 수를 계산하십시오.유닉스 시대:
$Now = [DateTime]::UtcNow
$Epoch = Get-Date -Year 1970 -Date 01/01
$unixTime = [int](New-TimeSpan $epoch $now).TotalSeconds
두 개의 특정 인스턴스(예제에서는 전날 00:01 - 23:59)에 대해 찾으려면 다음을 수행하세요.
$StartTime = (Get-Date "00:01:00").AddDays(-1)
$EndTime = (Get-Date "23:59:00").AddDays(-1)
$Epoch = Get-Date -Year 1970 -Date 01/01
$unixStart = [int](New-TimeSpan $epoch $StartTime).TotalSeconds
$unixEnd = [int](New-TimeSpan $epoch $EndTime).TotalSeconds
iex("c:\path_to_exe\myprog.exe -a $unixStart $unixEnd 1 1")