Invoke-Restmethod 在 PS 4.0 中破壞腳本
我有一個使用 Invoke-RestMethod 的 Powershell 腳本,該腳本在 powershell 3.0 中執行。但是,我升級到 powershell 4.0 以修復 powershell 3 中的錯誤。當我這樣做時,我的腳本似乎已經停止工作。
$username = "Administrator" $password = "PASSWORD" $uri = "https://10.0.0.18/vmrest/users" $dictionary = New-Object "System.Collections.Generic.Dictionary[[String],[String]]" $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f$username,$password))) $dictionary.Add("Authorization",$base64AuthInfo) Invoke-RestMethod -Uri $uri -Method GET -Headers $dictionary -Verbose
當我打開詳細開關時,它給了我這個響應
VERBOSE: GET https://192.168.1.18/vmrest/users with 0-byte payload VERBOSE: received -1-byte response of content type
我也嘗試指定請求的內容類型,但沒有骰子
$dictionary.Add("Accept","application/json") $dictionary.Add("Connection", "keep_alive")
讓我印象深刻的一件事是,由於您使用的是 HTTPS,因此我確信您一定會遇到證書錯誤,因為您的 URL 是 IP 地址。
您需要告訴 Powershell(實際上是 .NET 框架)忽略證書錯誤。否則它會在諸如 Invoke-WebRequest 之類的東西上搞砸。
試試這個:
[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
這是一個自定義證書驗證回調,始終返回 true,從而有效地忽略了證書問題。