특정 라인이 실행될 때 타임스탬프를 기록하여 스크립트가 중간에 중지되어 변수로 저장된 타임스탬프가 손실되더라도 스크립트가 해당 라인의 마지막 실행 이후 경과한 시간을 알 수 있도록 하고 싶습니다.
타임 스탬프를 저장하려고했습니다.
(Get-Date) | ConvertTo-Json | Out-File "$($env:TEMP)\LastTimeChecked.json"
그리고 타임스탬프를 읽어서
[DateTime]$LastTimeChecked=(Get-Content "$($env:TEMP)\LastTimeChecked.json" | ConvertFrom-Json)
그러나 PowerShall은 더 이상 Json에 저장된 데이터를 DateTime 형식으로 다시 변환할 수 없습니다. 파일은 다음과 같이 저장됩니다.
"value": "\/Date(1656291839853)\/",
"DisplayHint": 2,
"DateTime": "Monday, 27. June 2022 00:03:59"
이 Json 파일에서 타임스탬프를 검색하는 방법은 무엇입니까?
답변1
해당 날짜 문자열을 동일한 시스템(또는 파일을 저장한 것과 동일한 지역 설정으로 설치된 시스템)의 DateTime 객체로 구문 분석해야 하는 경우 다음을 사용할 수 있습니다.
$date = (Get-Content "$($env:TEMP)\LastTimeChecked.json" -Raw | ConvertFrom-Json).DateTime
$LastTimeChecked = [datetime]::ParseExact($date, 'dddd, dd. MMMM yyyy HH:mm:ss', $null) # or [cultureinfo]::CurrentCulture instead of $null
리더기의 지역별 날짜/시간 설정이 무엇인지 확실하지 않은 경우 다음을 사용하세요.
$date = (Get-Content "$($env:TEMP)\LastTimeChecked.json" -Raw | ConvertFrom-Json).DateTime
$LastTimeChecked = [datetime]::ParseExact($date, 'dddd, dd. MMMM yyyy HH:mm:ss', [cultureinfo]::InvariantCulture)