从 powershell 脚本中检索变量值

从 powershell 脚本中检索变量值

我需要每 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>

相关内容