Powershell

Invoke-Restmethod 在 PS 4.0 中破壞腳本

  • August 12, 2014

我有一個使用 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,從而有效地忽略了證書問題。

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