【PowerShell】時刻の差を検証したい
PowerShellで連続してAPIを実行するスクリプトを組みたい。
その時のAPIには、有効時間つきの認証トークンが必要。
そのため連続して実行させるためには、有効時間が経過したら、認証トークンを取得しなおす必要がある。
有効時間の検証するにはどうしたらいいのかなと思い、試しで組んでみた
その時のAPIには、有効時間つきの認証トークンが必要。
そのため連続して実行させるためには、有効時間が経過したら、認証トークンを取得しなおす必要がある。
有効時間の検証するにはどうしたらいいのかなと思い、試しで組んでみた
| 開発環境 | バージョン |
|---|---|
| PowerShell | 5.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)"