Windows-Server-2012-R2

從 powershell 腳本中檢索變數值

  • May 15, 2017

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

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>

引用自:https://serverfault.com/questions/850206