我需要每 15 分钟使用任务计划程序运行以下脚本(以在令牌过期之前刷新令牌)。我还有另一个脚本,它将通过调用函数“getToken”来使用“令牌值”。
问题是,当我使用任务运行脚本时,它不会保存变量 $token,因为 powershell 会话是仅为任务创建的。当脚本在没有任务的情况下执行时,我可以使用“getToken”值。创建全局变量没有帮助/
有办法解决这个问题或者有其他解决方法吗?
$refreshTokenBody = @{ grant_type = 'refresh_token'
client_id = 'clientID'
refresh_token= 'TokenNumber123124'}
$tokenRefresh = Invoke-RestMethod -Method Post -ContentType "application/x-www-form-urlencoded" -Uri "https://url.com" -Body $refreshTokenBody
$Global:token = $($tokenRefresh.access_token)
Function getToken{
return $token
}
答案1
PowerShell 仅在脚本执行过程中保留变量。您应该考虑以某种方式写出变量以供以后重用。我个人喜欢使用注册表,但文件系统也是一个有效的选择。
$Config = Get-ItemProperty "HKLM:\Software\yourregkey"
# Write to registry with this.
New-ItemProperty $Config -Name <Variable Name Here> -Value <value here> -Type string -Force
# Read from registry with this.
$ReadFromReg = $Config.<Variable Name Here>