6 votos

Invoke-Restmethod saltos de secuencia de comandos en PS 4.0

Tuve un script de Powershell que utiliza Invoke-RestMethod que estaba trabajando en powershell 3.0. Sin embargo, he actualizado a powershell 4.0 para arreglar un error en powershell 3. Cuando lo hice, mi guión parece haber dejado de funcionar.

$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

Cuando enciendo el detallado cambiar, me da esta respuesta

VERBOSE: GET https://192.168.1.18/vmrest/users with 0-byte payload VERBOSE: received -1-byte response of content type

También probé pidió especificar el tipo de contenido, pero no dice $dictionary.Add("Accept","application/json") $dictionary.Add("Connection", "keep_alive")

9voto

Ryan Ries Puntos 33449

Una cosa que sobresale a mí es que desde que usted está usando HTTPS, estoy seguro de que usted debe estar recibiendo errores de certificado ya que su URL es una dirección IP.

Usted necesita decirle a Powershell (la .NET framework, realmente,) para ignorar los errores de certificado. O de lo contrario mierda en cosas tales como Invocar-WebRequest.

Intente esto:

[Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

Es una costumbre de validación de certificados de devolución de llamada que siempre devuelve true con lo que efectivamente ignorar los problemas de los certificados.

1voto

briantist Puntos 866

Probablemente no es una respuesta a su problema, pero otro punto es que usted no tiene que construir la autenticación básica encabezados de sí mismo:

$secPw = ConvertTo-SecureString $password -AsPlainText -Force
$cred = New-Object PSCredential -ArgumentList $username,$secPw

Invoke-RestMethod -Uri $uri -Method Get -Credential $cred

Es especialmente útil si usted está de forma interactiva solicitar las credenciales porque sólo se puede utilizar Get-Credential y hacer con ella.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: