작업 타스크 2008 R2-cmd 행에 유닉스 UTC 시간이 필요합니다. 동적으로 얻는 방법?


1

이 포럼은 훌륭하며 내가 찾은 것보다 자동화하기가 더 쉬운 수동 프로세스를 수행하는 데 어려움을 겪고 싶습니다.

앱에 대한 로그를 업로드하는 공급 업체 앱의 명령 줄 도구가 있습니다. 이 도구는 유닉스 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 = "sender@mydomain.com"
    $toAddress = "recipient@mydomain.com"
    $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)
}

답변:


4

현재 날짜 / 시간을 유닉스 타임 스탬프로 얻으려면 유닉스 시대 가 시작된 이후 경과 된 시간 (초)을 계산하십시오 .

$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")

1
또한보십시오 : -UFormat옵션 -예[int] [double]::Parse((Get-Date -UFormat %s))
jscott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.