こもるーとたぬきの備忘録

profile

【PowerShell】時刻の差を検証したい

PowerShellで連続してAPIを実行するスクリプトを組みたい。
その時のAPIには、有効時間つきの認証トークンが必要。
そのため連続して実行させるためには、有効時間が経過したら、認証トークンを取得しなおす必要がある。
有効時間の検証するにはどうしたらいいのかなと思い、試しで組んでみた
開発環境バージョン
PowerShell5.1

# 文字化け対策:UTF-8 ※ファイルの保存形式はBOM付き
$OutputEncoding = [Text.Encoding]::UTF8

#テストログ
function log {
    Write-Host "test"
    Start-Sleep -Seconds 1
}

# 仮想トークン取得時間
$accessTokenGetTime = Get-date

Write-Host "仮想トークン取得時間:$($accessTokenGetTime)" 

for (($i = 0); $i -lt 60; $i++)
{
#実行時間の取得    
$now = Get-date
write-Host "$($i)回目ログ出力時間:$($now)"

# 仮想トークン取得時間と実行時間の差を取得
$elapsed = $now.TimeOfDay - $accessTokenGetTime.TimeOfDay
write-host  $elapsed.TotalSeconds

# 差が5秒だったら、仮想トークン取得時間の更新
if ($elapsed.TotalSeconds -ge 5) {
$accessTokenGetTime = Get-date
Write-Host "仮想トークン取得時間更新:$($accessTokenGetTime)"
}
log

}

Write-Host "最終トークン取得時間$($accessTokenGetTime)"