PowerShell에서 나중에 검색할 수 있도록 DateTime 변수를 파일에 저장하는 방법은 무엇입니까?

PowerShell에서 나중에 검색할 수 있도록 DateTime 변수를 파일에 저장하는 방법은 무엇입니까?

특정 라인이 실행될 때 타임스탬프를 기록하여 스크립트가 중간에 중지되어 변수로 저장된 타임스탬프가 손실되더라도 스크립트가 해당 라인의 마지막 실행 이후 경과한 시간을 알 수 있도록 하고 싶습니다.

타임 스탬프를 저장하려고했습니다.

(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)

관련 정보