Búsqueda de sitios web

Invocar-WebRequest (Microsoft.PowerShell.Utility)


Invoke-WebRequest

Módulo:
Microsoft.PowerShell.Utility

Obtiene contenido de una página web en Internet.

Sintaxis

Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      [-Method <WebRequestMethod>]
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-NoProxy]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]
Invoke-WebRequest
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-HttpVersion <Version>]
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-ConnectionTimeoutSeconds <Int32>]
      [-OperationTimeoutSeconds <Int32>]
      [-Headers <IDictionary>]
      [-SkipHeaderValidation]
      [-AllowInsecureRedirect]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-PreserveAuthorizationOnRedirect]
      [-RetryIntervalSec <Int32>]
      -CustomMethod <String>
      [-PreserveHttpMethodOnRedirect]
      [-UnixSocket <UnixDomainSocketEndPoint>]
      [-NoProxy]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [<CommonParameters>]

Descripción

El cmdlet Invoke-WebRequest envía solicitudes HTTP y HTTPS a una página web o servicio web. Analiza la respuesta y devuelve colecciones de enlaces, imágenes y otros elementos HTML importantes.

Este cmdlet se introdujo en PowerShell 3.0.

A partir de PowerShell 7.0, Invoke-WebRequest admite la configuración de proxy definida por variables de entorno. Consulte la sección de Notas de este artículo.

es importante

Los ejemplos de este artículo hacen referencia a hosts en el dominio contoso.com. Este es un dominio ficticio utilizado por Microsoft por ejemplo. Los ejemplos están diseñados para mostrar cómo utilizar los cmdlets. Sin embargo, dado que los sitios contoso.com no existen, los ejemplos no funcionan. Adapte los ejemplos a los hosts de su entorno.

A partir de PowerShell 7.4, la codificación de caracteres para las solicitudes tiene como valor predeterminado UTF-8 en lugar de ASCII. Si necesita una codificación diferente, debe establecer el atributo charset en el encabezado Content-Type.

Ejemplos

Ejemplo 1: enviar una solicitud web

Este ejemplo utiliza el cmdlet Invoke-WebRequest para enviar una solicitud web al sitio Bing.com.

$Response = Invoke-WebRequest -URI https://www.bing.com/search?q=how+many+feet+in+a+mile
$Response.InputFields | Where-Object {
    $_.name -like "* Value*"
} | Select-Object Name, Value

name       value
----       -----
From Value 1
To Value   5280

El primer comando emite la solicitud y guarda la respuesta en la variable $Response.

El segundo comando obtiene cualquier InputField donde la propiedad Name sea como "* Value". Los resultados filtrados se canalizan a Select-Object para seleccionar las propiedades Nombre y Valor.

Ejemplo 2: utilizar un servicio web con estado

Este ejemplo muestra cómo utilizar el cmdlet Invoke-WebRequest con un servicio web con estado.

$LoginParameters = @{
    Uri             = 'https://www.contoso.com/login/'
    SessionVariable = 'Session'
    Method          = 'POST'
    Body            = @{
        User     = 'jdoe'
        Password = 'P@S$w0rd!'
    }
}
$LoginResponse = Invoke-WebRequest @LoginParameters
$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session

La primera llamada a Invoke-WebRequest envía una solicitud de inicio de sesión. El comando especifica un valor de Session para el valor del parámetro SessionVariable. Cuando se completa el comando, la variable $LoginResponse contiene un BasicHtmlWebResponseObject y la variable $Session contiene un objeto WebRequestSession. Esto inicia la sesión del usuario en el sitio.

La segunda llamada a Invoke-WebRequest recupera el perfil del usuario, lo que requiere que el usuario inicie sesión en el sitio. Los datos de sesión almacenados en la variable $Session proporcionan cookies de sesión al sitio creado durante el inicio de sesión.

Ejemplo 3: obtener enlaces de una página web

Este ejemplo obtiene los enlaces en una página web. Utiliza el cmdlet Invoke-WebRequest para obtener el contenido de la página web. Luego utiliza la propiedad Links del BasicHtmlWebResponseObject que devuelve Invoke-WebRequest y la propiedad Href de cada enlace. .

(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href

Ejemplo 4: escribir el contenido de la respuesta en un archivo utilizando la codificación definida en la página solicitada

Este ejemplo utiliza el cmdlet Invoke-WebRequest para recuperar el contenido de la página web de una página de documentación de PowerShell.

$Response = Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs"
$Stream = [System.IO.StreamWriter]::new('.\docspage.html', $false, $Response.Encoding)
try {
    $Stream.Write($Response.Content)
} finally {
    $Stream.Dispose()
}

El primer comando recupera la página y guarda el objeto de respuesta en la variable $Response.

El segundo comando crea un StreamWriter que se utilizará para escribir el contenido de la respuesta en un archivo. La propiedad Encoding del objeto de respuesta se utiliza para establecer la codificación del archivo.

Los últimos comandos escriben la propiedad Contenido en el archivo y luego eliminan el StreamWriter.

Tenga en cuenta que la propiedad Encoding es nula si la solicitud web no devuelve contenido de texto.

Ejemplo 5: enviar un archivo de datos de formulario/de varias partes

Este ejemplo utiliza el cmdlet Invoke-WebRequest para cargar un archivo como envío multipart/form-data. El archivo c:\document.txt se envía como el campo de formulario document con el Tipo de contenido de text/plain.

$FilePath = 'c:\document.txt'
$FieldName = 'document'
$ContentType = 'text/plain'

$FileStream = [System.IO.FileStream]::new($filePath, [System.IO.FileMode]::Open)
$FileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new('form-data')
$FileHeader.Name = $FieldName
$FileHeader.FileName = Split-Path -leaf $FilePath
$FileContent = [System.Net.Http.StreamContent]::new($FileStream)
$FileContent.Headers.ContentDisposition = $FileHeader
$FileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse($ContentType)

$MultipartContent = [System.Net.Http.MultipartFormDataContent]::new()
$MultipartContent.Add($FileContent)

$Response = Invoke-WebRequest -Body $MultipartContent -Method 'POST' -Uri 'https://api.contoso.com/upload'

Ejemplo 6: Envío simplificado de datos de formulario/multiparte

Algunas API requieren envíos multipart/form-data para cargar archivos y contenido mixto. Este ejemplo demuestra la actualización de un perfil de usuario.

$Uri = 'https://api.contoso.com/v2/profile'
$Form = @{
    firstName  = 'John'
    lastName   = 'Doe'
    email      = 'john.doe@contoso.com'
    avatar     = Get-Item -Path 'c:\Pictures\jdoe.png'
    birthday   = '1980-10-15'
    hobbies    = 'Hiking','Fishing','Jogging'
}
$Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $Form

El formulario de perfil requiere estos campos: firstName, lastName, email, avatar, cumpleaños y pasatiempos. La API espera que se proporcione una imagen para la foto de perfil del usuario en el campo avatar. La API también acepta múltiples entradas de hobbies que se enviarán en el mismo formulario.

Al crear la tabla hash $Form, los nombres de las claves se utilizan como nombres de campos del formulario. De forma predeterminada, los valores de HashTable se convierten en cadenas. Si hay un valor System.IO.FileInfo, se envía el contenido del archivo. Si hay una colección como matrices o listas, el campo del formulario se envía varias veces.

Usando Get-Item en la clave avatar, el objeto FileInfo se establece como valor. El resultado es que se envían los datos de la imagen para jdoe.png.

Al proporcionar una lista a la tecla hobbies, el campo hobbies está presente en los envíos una vez para cada elemento de la lista.

Ejemplo 7: capturar mensajes sin éxito de Invoke-WebRequest

Cuando Invoke-WebRequest encuentra un mensaje HTTP que no es exitoso (404, 500, etc.), no devuelve ningún resultado y arroja un error de terminación. Para detectar el error y ver el StatusCode, puede incluir la ejecución en un bloque try/catch.

try
{
    $Response = Invoke-WebRequest -Uri "www.microsoft.com/unkownhost"
    # This will only execute if the Invoke-WebRequest is successful.
    $StatusCode = $Response.StatusCode
} catch {
    $StatusCode = $_.Exception.Response.StatusCode.value__
}
$StatusCode

404

El error de terminación es detectado por el bloque catch, que recupera el StatusCode del objeto Exception.

Ejemplo 8: descargar varios archivos al mismo tiempo

El cmdlet Invoke-WebRequest solo puede descargar un archivo a la vez. El siguiente ejemplo utiliza Start-ThreadJob para crear varios trabajos de subprocesos para descargar varios archivos al mismo tiempo.

$baseUri = 'https://github.com/PowerShell/PowerShell/releases/download'
$files = @(
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.msi"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.zip"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.zip'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.msi"
        OutFile = 'PowerShell-7.2.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.zip"
        OutFile = 'PowerShell-7.2.5-win-x64.zip'
    }
)

$jobs = @()

foreach ($file in $files) {
    $jobs += Start-ThreadJob -Name $file.OutFile -ScriptBlock {
        $params = $using:file
        Invoke-WebRequest @params
    }
}

Write-Host "Downloads started..."
Wait-Job -Job $jobs

foreach ($job in $jobs) {
    Receive-Job -Job $job
}

Ejemplo 9: omitir la validación del encabezado

De forma predeterminada, el cmdlet Invoke-WebRequest valida los valores de encabezados conocidos que tienen un formato de valor definido por estándares. El siguiente ejemplo muestra cómo esta validación puede generar un error y cómo puede utilizar el parámetro SkipHeaderValidation para evitar validar valores para puntos finales que toleran valores con formato no válido.

$Uri = 'https://httpbin.org/headers'
$InvalidHeaders = @{
    'If-Match' = '12345'
}

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation

Invoke-WebRequest: The format of value '12345' is invalid.

StatusCode        : 200
StatusDescription : OK
Content           : {
                      "headers": {
                        "Host": "httpbin.org",
                        "If-Match": "12345",
                        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) PowerShell/7.2.5",
                        "X-Amzn-Trace-Id": �
RawContent        : HTTP/1.1 200 OK
                    Date: Mon, 08 Aug 2022 16:24:24 GMT
                    Connection: keep-alive
                    Server: gunicorn/19.9.0
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Type: application�
Headers           : {[Date, System.String[]], [Connection, System.String[]], [Server, System.String[]], [Access-Control-Allow-Origin, System.String[]]�}
Images            : {}
InputFields       : {}
Links             : {}
RawContentLength  : 249
RelationLink      : {}

httpbin.org es un servicio que devuelve información sobre solicitudes web y respuestas para la resolución de problemas. La variable $Uri se asigna al punto final /headers del servicio, que devuelve los encabezados de una solicitud como contenido en su respuesta.

El encabezado de solicitud If-Match se define en la sección 3.1 de RFC-7232 y requiere que el valor de ese encabezado se defina entre comillas. A la variable $InvalidHeaders se le asigna una tabla hash donde el valor de If-Match no es válido porque está definido como 12345 en lugar de ". 12345".

Llamar a Invoke-WebRequest con encabezados no válidos devuelve un error que informa que el valor formateado no es válido. La solicitud no se envía al punto final.

Llamar a Invoke-WebRequest con el parámetro SkipHeaderValidation ignora el error de validación y envía la solicitud al punto final. Dado que el punto final tolera valores de encabezado no compatibles, el cmdlet devuelve el objeto de respuesta sin errores.

Ejemplo 10: enviar una solicitud mediante HTTP 2.0

Este ejemplo obtiene los enlaces de una página web utilizando el protocolo HTTP 2.0. Utiliza el cmdlet Invoke-WebRequest para obtener el contenido de la página web. Luego utiliza la propiedad Links del BasicHtmlWebResponseObject que devuelve Invoke-WebRequest y la propiedad Href de cada enlace. .

(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href

Ejemplo 11: enviar una solicitud a una aplicación de socket Unix

Algunas aplicaciones, como Docker, exponen un socket Unix para la comunicación. Este ejemplo solicita una lista de imágenes de Docker utilizando la API de Docker. El cmdlet se conecta al demonio Docker mediante el socket Unix.

Invoke-WebRequest -Uri "http://localhost/v1.40/images/json/" -UnixSocket "/var/run/docker.sock"

Parámetros

-AllowInsecureRedirect

Permite redireccionar de HTTPS a HTTP. De forma predeterminada, cualquier solicitud que se redirige de HTTPS a HTTP genera un error y la solicitud se cancela para evitar la comunicación involuntaria en texto sin formato a través de conexiones no cifradas. Para anular este comportamiento bajo su propia responsabilidad, utilice el parámetro AllowInsecureRedirect.

Este parámetro se agregó en PowerShell 7.4.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-AllowUnencryptedAuthentication

Permite el envío de credenciales y secretos a través de conexiones no cifradas. De forma predeterminada, proporcionar Credencial o cualquier opción de Autenticación con un Uri que no comience con https:// genera un error y la solicitud se cancela para evitar la comunicación involuntaria de secretos en texto sin formato a través de conexiones no cifradas. Para anular este comportamiento bajo su propia responsabilidad, proporcione el parámetro AllowUnencryptedAuthentication.

Advertencia

El uso de este parámetro no es seguro y no se recomienda. Se proporciona únicamente por compatibilidad con sistemas heredados que no pueden proporcionar conexiones cifradas. Úselo bajo su propio riesgo.

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Authentication

Especifica el tipo de autenticación explícita que se utilizará para la solicitud. El valor predeterminado es Ninguno. El parámetro Authentication no se puede utilizar con el parámetro UseDefaultCredentials.

Opciones de autenticación disponibles:

  • Ninguno: esta es la opción predeterminada cuando no se proporciona Autenticación. No se utiliza ninguna autenticación explícita.
  • Básico: Requiere Credencial. Las credenciales se envían como un encabezado de autenticación básica RFC 7617 Autorización: básica en el formato base64(usuario:contraseña).
  • Portador: Requiere el parámetro Token. Envía un encabezado RFC 6750 Autorización: Portador con el token proporcionado.
  • OAuth: Requiere el parámetro Token. Envía un encabezado RFC 6750 Autorización: Portador con el token proporcionado.

El suministro de Autenticación anula cualquier encabezado Autorización proporcionado a Encabezados o incluido en WebSession.

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

Tipo de autenticación web

Valores aceptados:

Ninguno, Básico, Portador, OAuth

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Body

Especifica el cuerpo de la solicitud. El cuerpo es el contenido de la solicitud que sigue a los encabezados. También puede canalizar un valor del cuerpo a Invoke-WebRequest.

El parámetro Cuerpo se puede utilizar para especificar una lista de parámetros de consulta o especificar el contenido de la respuesta. Para los parámetros de consulta, el cmdlet utiliza el método System.Net.WebUtility.UrlEncode para codificar los pares clave-valor. Para obtener más información sobre la codificación de cadenas para URL, consulte la referencia del método UrlEncode().

Cuando la entrada es una solicitud POST y el cuerpo es una Cadena, el valor a la izquierda del primer signo igual (=) se establece como clave en los datos del formulario. y el texto restante se establece como valor. Para especificar varias claves, utilice un objeto IDictionary, como una tabla hash, para el Cuerpo.

Cuando la entrada es una solicitud GET y el cuerpo es un IDictionary (normalmente, una tabla hash), el cuerpo se agrega al URI como parámetros de consulta. Para otros tipos de solicitud (como PATCH), el cuerpo se establece como el valor del cuerpo de la solicitud en el formato estándar name=value con los valores codificados en URL.

Cuando la entrada es un objeto System.Xml.XmlNode y la declaración XML especifica una codificación, esa codificación se utiliza para los datos de la solicitud a menos que el parámetro ContentType la anule.

El parámetro Body también acepta un objeto System.Net.Http.MultipartFormDataContent. Esto facilita las solicitudes multipart/form-data. Cuando se proporciona un objeto MultipartFormDataContent para Body, cualquier encabezado relacionado con el contenido proporcionado a ContentType, Headers o < Los parámetrosWebSession son anulados por los encabezados de contenido del objeto MultipartFormDataContent. Esta característica se agregó en PowerShell 6.0.0.

Tipo :

Objeto

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

True

Aceptar caracteres comodín:

False

-Certificate

Especifica el certificado de cliente que se utiliza para una solicitud web segura. Introduzca una variable que contenga un certificado o un comando o expresión que obtenga el certificado.

Para buscar un certificado, utilice Get-PfxCertificate o utilice el cmdlet Get-ChildItem en la unidad Certificado (Cert:). Si el certificado no es válido o no tiene suficiente autoridad, el comando falla.

Tipo :

Certificado X509

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-CertificateThumbprint

Especifica el certificado de clave pública digital (X509) de una cuenta de usuario que tiene permiso para enviar la solicitud. Ingrese la huella digital del certificado.

Los certificados se utilizan en la autenticación basada en certificados de cliente. Los certificados solo se pueden asignar a cuentas de usuarios locales, no a cuentas de dominio.

Para ver la huella digital del certificado, utilice el comando Get-Item o Get-ChildItem para buscar el certificado en Cert:\CurrentUser\My.

Nota

Esta función solo es compatible con plataformas con sistema operativo Windows.

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-ConnectionTimeoutSeconds

Especifica cuánto tiempo puede estar pendiente la solicitud antes de que expire el tiempo de espera. Introduzca un valor en segundos. El valor predeterminado, 0, especifica un tiempo de espera indefinido.

Una consulta del Sistema de nombres de dominio (DNS) puede tardar hasta 15 segundos en regresar o expirar. Si su solicitud contiene un nombre de host que requiere resolución y establece ConnectionTimeoutSeconds en un valor mayor que cero, pero menor de 15 segundos, pueden pasar 15 segundos o más antes de que se produzca una WebException . se lanza y su solicitud expira.

Este parámetro reemplazó al parámetro TimeoutSec en PowerShell 7.4. Puede utilizar TimeoutSec como alias para ConnectionTimeoutSeconds.

Tipo :

Int32

Alias:

TimeoutSec

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-ContentType

Especifica el tipo de contenido de la solicitud web.

Si el valor de ContentType contiene el formato de codificación (como charset), el cmdlet usa ese formato para codificar el cuerpo de la solicitud web. Si ContentType no especifica un formato de codificación, se utiliza el formato de codificación predeterminado. Un ejemplo de un ContentType con un formato de codificación es text/plain; charset=iso-8859-5, que especifica el alfabeto latino/cirílico.

Si se omite este parámetro y el método de solicitud es POST o PUT, Invoke-WebRequest establece el tipo de contenido en application/x-www-form-urlencoded. De lo contrario, el tipo de contenido no se especifica en la llamada.

ContentType se anula cuando se proporciona un objeto MultipartFormDataContent para Body.

A partir de PowerShell 7.4, si usa este parámetro y el parámetro Headers para definir el encabezado Content-Type, el valor especificado en ContentType se utiliza el parámetro.

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Credential

Especifica una cuenta de usuario que tiene permiso para enviar la solicitud. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como Usuario01 o Dominio01\Usuario01, o introduzca un objeto PSCredential generado por Get-Credential. código> cmdlet.

La Credencial se puede utilizar sola o junto con determinadas opciones del parámetro Autenticación. Cuando se usa solo, solo proporciona credenciales al servidor remoto si el servidor remoto envía una solicitud de desafío de autenticación. Cuando se utiliza con opciones de Autenticación, las credenciales se envían explícitamente.

Las credenciales se almacenan en un objeto PSCredential y la contraseña se almacena como SecureString.

Nota

Para obtener más información sobre la protección de datos de SecureString, consulte ¿Qué tan seguro es SecureString?.

Tipo :

PSCredencial

Posición:

Nombrado

Valor predeterminado:

Usuario actual

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-CustomMethod

Especifica un método personalizado utilizado para la solicitud web. Esto se puede utilizar si el método de solicitud requerido por el punto final no es una opción disponible en el Método. Método y CustomMethod no se pueden utilizar juntos.

Este ejemplo realiza una solicitud HTTP TEST a la API:

Invoke-WebRequest -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

String

Alias:

CM

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

True

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-DisableKeepAlive

Indica que el cmdlet establece el valor KeepAlive en el encabezado HTTP en False. De forma predeterminada, KeepAlive es Verdadero. KeepAlive establece una conexión persistente con el servidor para facilitar solicitudes posteriores.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Form

Convierte un diccionario en un envío multipart/form-data. Formulario no se puede utilizar con Cuerpo. Si se utiliza ContentType, se ignora.

Las claves del diccionario se utilizan como nombres de campos del formulario. De forma predeterminada, los valores del formulario se convierten en valores de cadena.

Si el valor es un objeto System.IO.FileInfo, entonces se envía el contenido del archivo binario. El nombre del archivo se envía como la propiedad filename. El tipo MIME se establece como application/octet-stream. Get-Item se puede utilizar para simplificar el suministro del objeto System.IO.FileInfo.

$Form=@{ resume=Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }

Si el valor es un tipo de colección, como matrices o listas, el campo for se envía varias veces. Los valores de la lista se tratan como cadenas de forma predeterminada. Si el valor es un objeto System.IO.FileInfo, entonces se envía el contenido del archivo binario. No se admiten colecciones anidadas.

$Form=@{ etiquetas='Vacaciones', 'Italia', '2017' imágenes=Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italia' }

En el ejemplo anterior, el campo etiquetas se proporciona tres veces en el formulario, una para cada uno de Vacaciones, Italia y 2017. El campo imágenes también se envía una vez para cada archivo en la carpeta 2017-Italia. El contenido binario de los archivos en esa carpeta se envía como valores.

Esta característica se agregó en PowerShell 6.1.0.

Tipo :

Diccionario

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Headers

Especifica los encabezados de la solicitud web. Ingrese una tabla hash o un diccionario.

Los encabezados relacionados con el contenido, como Content-Type, se anulan cuando se proporciona un objeto MultipartFormDataContent para Body.

A partir de PowerShell 7.4, si usa este parámetro para definir el encabezado Content-Type y usa el parámetro ContentType, el valor especificado en el parámetro ContentType se utiliza.

Tipo :

Diccionario

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-HttpVersion

Especifica la versión HTTP utilizada para la solicitud. El valor predeterminado es 1.1.

Los valores válidos son:

  • 1.0
  • 1.1
  • 2.0
  • 3.0
Tipo :

Versión

Posición:

Nombrado

Valor predeterminado:

1.1

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-InFile

Obtiene el contenido de la solicitud web de un archivo. Ingrese una ruta y un nombre de archivo. Si omite la ruta, el valor predeterminado es la ubicación actual.

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-MaximumRedirection

Especifica cuántas veces PowerShell redirige una conexión a un identificador uniforme de recursos (URI) alternativo antes de que falle la conexión. El valor predeterminado es 5. Un valor de 0 (cero) impide toda redirección.

Tipo :

Int32

Posición:

Nombrado

Valor predeterminado:

5

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-MaximumRetryCount

Especifica cuántas veces PowerShell reintenta una conexión cuando se recibe un código de error entre 400 y 599, inclusive o 304. Consulte también el parámetro RetryIntervalSec para especificar el número de reintentos.

Tipo :

Int32

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Method

Especifica el método utilizado para la solicitud web. Los valores aceptables para este parámetro son:

    Default
    Delete
    Get
    Head
    Merge
    Options
    Patch
    Post
    Put
    Trace

El parámetro CustomMethod se puede utilizar para métodos de solicitud que no aparecen en la lista anterior.

Tipo :

Método de solicitud web

Valores aceptados:

Predeterminado, Obtener, Encabezar, Publicar, Poner, Eliminar, Seguimiento, Opciones, Fusionar, Parche

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-NoProxy

Indica que el cmdlet no debe usar un proxy para llegar al destino. Cuando necesite omitir el proxy configurado en el entorno, utilice este modificador. Esta característica se agregó en PowerShell 6.0.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

True

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-OperationTimeoutSeconds

Este tiempo de espera se aplica a las lecturas de datos dentro de una transmisión, no al tiempo de la transmisión en su conjunto. El valor predeterminado, 0, especifica un tiempo de espera indefinido.

Establecer el valor en 30 segundos significa que cualquier retraso de más de 30 segundos entre los datos del flujo finaliza la solicitud. Un archivo grande que tarda varios minutos en descargarse no finalizará a menos que la transmisión se detenga durante más de 30 segundos.

Tipo :

Int32

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-OutFile

De forma predeterminada, Invoke-WebRequest devuelve los resultados a la canalización. Cuando utiliza el parámetro OutFile, los resultados se guardan en el archivo especificado y no se devuelven a la canalización. Ingrese una ruta y un nombre de archivo. Para enviar los resultados a un archivo y a la canalización, agregue el parámetro Passthru.

Si omite la ruta, el valor predeterminado es la ubicación actual. El nombre se trata como una ruta literal. Los nombres que contienen corchetes ([]) deben estar entre comillas simples (').

A partir de PowerShell 7.4, puede especificar una ruta de carpeta sin el nombre del archivo. Cuando lo hace, el comando utiliza el nombre de archivo del último segmento del URI resuelto después de cualquier redireccionamiento. Cuando especifica una ruta de carpeta para OutFile, no puede utilizar el parámetro Resume.

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-PassThru

Indica que el cmdlet devuelve los resultados, además de escribirlos en un archivo. Este parámetro es válido sólo cuando el parámetro OutFile también se utiliza en el comando.

Nota

Cuando utiliza el parámetro PassThru, la salida se escribe en la canalización pero no se crea el archivo. Esto se solucionó en PowerShell 7.5-preview.4. Para obtener más información, consulte el número 15409 de PowerShell.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-PreserveAuthorizationOnRedirect

Indica que el cmdlet debe conservar el encabezado Authorization, cuando esté presente, en todas las redirecciones.

De forma predeterminada, el cmdlet elimina el encabezado Autorización antes de redirigir. Al especificar este parámetro se deshabilita esta lógica en los casos en los que el encabezado debe enviarse a la ubicación de redirección.

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-PreserveHttpMethodOnRedirect

Indica que el cmdlet debe conservar el método de la solicitud en todas las redirecciones.

De forma predeterminada, el cmdlet cambia el método a GET cuando se redirige. Al especificar este parámetro se deshabilita esta lógica para garantizar que el método previsto se pueda utilizar con la redirección.

Esta característica se agregó en PowerShell 7.4.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Proxy

Especifica un servidor proxy para la solicitud, en lugar de conectarse directamente al recurso de Internet. Ingrese el URI de un servidor proxy de red.

Tipo :

uri

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-ProxyCredential

Especifica una cuenta de usuario que tiene permiso para utilizar el servidor proxy especificado por el parámetro Proxy. El valor predeterminado es el usuario actual.

Escriba un nombre de usuario, como Usuario01 o Dominio01\Usuario01, o ingrese un objeto PSCredential, como uno generado por Get -Cmdlet Credencial.

Este parámetro es válido sólo cuando el parámetro Proxy también se utiliza en el comando. No puede utilizar los parámetros ProxyCredential y ProxyUseDefaultCredentials en el mismo comando.

Tipo :

PSCredencial

Posición:

Nombrado

Valor predeterminado:

Usuario actual

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-ProxyUseDefaultCredentials

Indica que el cmdlet usa las credenciales del usuario actual para acceder al servidor proxy especificado por el parámetro Proxy.

Este parámetro es válido sólo cuando el parámetro Proxy también se utiliza en el comando. No puede utilizar los parámetros ProxyCredential y ProxyUseDefaultCredentials en el mismo comando.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Resume

Realiza un intento de máximo esfuerzo para reanudar la descarga de un archivo parcial. Reanudar requiere OutFile.

Reanudar solo opera con el tamaño del archivo local y el archivo remoto y no realiza ninguna otra validación de que el archivo local y el archivo remoto sean iguales.

Si el tamaño del archivo local es menor que el tamaño del archivo remoto, el cmdlet intenta reanudar la descarga del archivo y agrega los bytes restantes al final del archivo.

Si el tamaño del archivo local es el mismo que el tamaño del archivo remoto, no se realiza ninguna acción y el cmdlet supone que la descarga ya se completó.

Si el tamaño del archivo local es mayor que el tamaño del archivo remoto, entonces el archivo local se sobrescribe y se vuelve a descargar todo el archivo remoto. Este comportamiento es el mismo que usar OutFile sin Resume.

Si el servidor remoto no admite la reanudación de la descarga, entonces se sobrescribe el archivo local y se vuelve a descargar todo el archivo remoto. Este comportamiento es el mismo que usar OutFile sin Resume.

Si el archivo local no existe, se crea el archivo local y se descarga el archivo remoto completo. Este comportamiento es el mismo que usar OutFile sin Resume.

Esta característica se agregó en PowerShell 6.1.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-RetryIntervalSec

Especifica el intervalo entre reintentos de conexión cuando se recibe un código de error entre 400 y 599, inclusive o 304. Consulte también el parámetro MaximumRetryCount para especificar el número de reintentos. El valor debe estar entre 1 y [int]::MaxValue.

Cuando el código de error es 429 y la respuesta incluye la propiedad Retry-After en sus encabezados, el cmdlet usa ese valor para el intervalo de reintento, incluso si se especifica este parámetro.

Tipo :

Int32

Posición:

Nombrado

Valor predeterminado:

5

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-SessionVariable

Especifica una variable para la cual este cmdlet crea una sesión de solicitud web y la guarda en el valor. Introduzca un nombre de variable sin el símbolo del signo de dólar ($).

Cuando especifica una variable de sesión, Invoke-WebRequest crea un objeto de sesión de solicitud web y lo asigna a una variable con el nombre especificado en su sesión de PowerShell. Puede utilizar la variable en su sesión tan pronto como se complete el comando.

Antes de PowerShell 7.4, la sesión de solicitud web no era una conexión persistente. Es un objeto que contiene información sobre la conexión y la solicitud, incluidas cookies, credenciales, el valor máximo de redirección y la cadena del agente de usuario. Puede usarlo para compartir estado y datos entre solicitudes web.

A partir de PowerShell 7.4, la sesión de solicitud web es persistente siempre que las propiedades de la sesión no se invaliden en una solicitud posterior. Cuando lo son, el cmdlet recrea la sesión con los nuevos valores. Las sesiones persistentes reducen la sobrecarga de solicitudes repetidas, haciéndolas mucho más rápidas.

Para utilizar la sesión de solicitud web en solicitudes web posteriores, especifique la variable de sesión en el valor del parámetro WebSession. PowerShell utiliza los datos del objeto de sesión de solicitud web al establecer la nueva conexión. Para anular un valor en la sesión de solicitud web, utilice un parámetro de cmdlet, como UserAgent o Credential. Los valores de los parámetros tienen prioridad sobre los valores en la sesión de solicitud web.

No puede utilizar los parámetros SessionVariable y WebSession en el mismo comando.

Tipo :

String

Alias:

SV

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-SkipCertificateCheck

Omite las comprobaciones de validación de certificados. Esto incluye todas las validaciones, como caducidad, revocación, autoridad raíz confiable, etc.

Advertencia

El uso de este parámetro no es seguro y no se recomienda. Este conmutador solo está diseñado para usarse contra hosts conocidos mediante un certificado autofirmado con fines de prueba. Úselo bajo su propio riesgo.

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-SkipHeaderValidation

Indica que el cmdlet debe agregar encabezados a la solicitud sin validación.

Este modificador debe usarse para sitios que requieren valores de encabezado que no se ajustan a los estándares. Al especificar este modificador se deshabilita la validación para permitir que el valor se pase sin marcar. Cuando se especifica, todos los encabezados se agregan sin validación.

Este modificador deshabilita la validación de los valores pasados a los parámetros ContentType, Headers y UserAgent.

Esta característica se agregó en PowerShell 6.0.0.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-SkipHttpErrorCheck

Este parámetro hace que el cmdlet ignore los estados de error HTTP y continúe procesando respuestas. Las respuestas de error se escriben en la canalización como si fueran exitosas.

Este parámetro se introdujo en PowerShell 7.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-SslProtocol

Establece los protocolos SSL/TLS permitidos para la solicitud web. De forma predeterminada, se permiten todos los protocolos SSL/TLS admitidos por el sistema. SslProtocol permite limitar protocolos específicos con fines de cumplimiento.

Estos valores se definen como una enumeración basada en indicadores. Puede combinar varios valores para establecer varios indicadores utilizando este parámetro. Los valores se pueden pasar al parámetro SslProtocol como una matriz de valores o como una cadena de esos valores separada por comas. El cmdlet combina los valores mediante una operación binaria O. Pasar valores como una matriz es la opción más simple y también le permite usar la función de tabulación en los valores. Es posible que no pueda definir varias opciones en todas las plataformas.

Nota

En plataformas que no sean Windows, es posible que no sea posible proporcionar Tls o Tls12 como opción. La compatibilidad con Tls13 no está disponible en todos los sistemas operativos y deberá verificarse según cada sistema operativo.

Esta característica se agregó en PowerShell 6.0.0 y se agregó compatibilidad con Tls13 en PowerShell 7.1.

Tipo :

Protocolo WebSsl

Valores aceptados:

Predeterminado, Tls, Tls11, Tls12

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Token

El token de OAuth o portador que se incluirá en la solicitud. Ciertas opciones de Autenticación requieren el Token. No se puede utilizar de forma independiente.

Token toma un SecureString que contiene el token. Para suministrar el token manualmente, utilice lo siguiente:

Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)

Este parámetro se introdujo en PowerShell 6.0.

Tipo :

SecureString

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-TransferEncoding

Especifica un valor para el encabezado de respuesta HTTP de codificación de transferencia. Los valores aceptables para este parámetro son:

    Chunked
    Compress
    Deflate
    GZip
    Identity
Tipo :

String

Valores aceptados:

fragmentado, comprimir, desinflar, gzip, identidad

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-UnixSocket

Especifica el nombre del socket Unix al que conectarse. Este parámetro es compatible con sistemas basados en Unix y Windows versión 1803 y posteriores. Para obtener más información sobre la compatibilidad de Windows con sockets Unix, consulte la publicación del blog Interoperabilidad de Windows/WSL con AF_UNIX.

Este parámetro se agregó en PowerShell 7.4.

Tipo :

UnixDomainSocketEndPoint

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-Uri

Especifica el Identificador uniforme de recursos (URI) del recurso de Internet al que se envía la solicitud web. Introduzca una URI. Este parámetro solo admite HTTP o HTTPS.

Este parámetro es obligatorio. El nombre del parámetro Uri es opcional.

Tipo :

uri

Posición:

0

Valor predeterminado:

None

Requerido:

True

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-UseBasicParsing

Este parámetro ha quedado obsoleto. A partir de PowerShell 6.0.0, todas las solicitudes web utilizan únicamente análisis básico. Este parámetro se incluye únicamente por compatibilidad con versiones anteriores y su uso no tiene ningún efecto en el funcionamiento del cmdlet.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-UseDefaultCredentials

Indica que el cmdlet usa las credenciales del usuario actual para enviar la solicitud web. Esto no se puede utilizar con Autenticación o Credencial y es posible que no sea compatible con todas las plataformas.

Tipo :

SwitchParameter

Posición:

Nombrado

Valor predeterminado:

False

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-UserAgent

Especifica una cadena de agente de usuario para la solicitud web.

El agente de usuario predeterminado es similar a Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 con ligeras variaciones para cada sistema operativo y plataforma.

Para probar un sitio web con la cadena de agente de usuario estándar que utilizan la mayoría de los navegadores de Internet, utilice las propiedades de la clase PSUserAgent, como Chrome, FireFox, InternetExplorer, Opera y Safari.

Por ejemplo, el siguiente comando utiliza la cadena de agente de usuario para Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)

Tipo :

String

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

-WebSession

Especifica una sesión de solicitud web. Introduzca el nombre de la variable, incluido el signo de dólar ($).

Para anular un valor en la sesión de solicitud web, utilice un parámetro de cmdlet, como UserAgent o Credential. Los valores de los parámetros tienen prioridad sobre los valores en la sesión de solicitud web. Los encabezados relacionados con el contenido, como Content-Type, también se anulan cuando se proporciona un objeto MultipartFormDataContent para Body.

A diferencia de una sesión remota, la sesión de solicitud web no es una conexión persistente. Es un objeto que contiene información sobre la conexión y la solicitud, incluidas cookies, credenciales, el valor máximo de redirección y la cadena del agente de usuario. Puede usarlo para compartir estado y datos entre solicitudes web.

Para crear una sesión de solicitud web, ingrese un nombre de variable, sin un signo de dólar, en el valor del parámetro SessionVariable de un comando Invoke-WebRequest. Invoke-WebRequest crea la sesión y la guarda en la variable. En comandos posteriores, utilice la variable como valor del parámetro WebSession.

No puede utilizar los parámetros SessionVariable y WebSession en el mismo comando.

Tipo :

Sesión de solicitud web

Posición:

Nombrado

Valor predeterminado:

None

Requerido:

False

Aceptar entrada de canalización:

False

Aceptar caracteres comodín:

False

Entradas

Objeto

Puede canalizar el cuerpo de una solicitud web a este cmdlet.

Salidas

Objeto de respuesta web HTML básico

Este cmdlet devuelve el objeto de respuesta que representa el resultado de la solicitud web.

Notas

PowerShell incluye los siguientes alias para Invoke-WebRequest:

  • Todas las plataformas:

      iwr

A partir de PowerShell 6.0.0, Invoke-WebRequest solo admite análisis básico.

Para obtener más información, consulte BasicHtmlWebResponseObject.

Debido a cambios en .NET Core 3.1, PowerShell 7.0 y versiones posteriores utilizan la propiedad HttpClient.DefaultProxy para determinar la configuración del proxy.

El valor de esta propiedad está determinado por su plataforma:

  • Para Windows: lee la configuración del proxy a partir de variables de entorno. Si esas variables no están definidas, la propiedad se deriva de la configuración del proxy del usuario.
  • Para macOS: lee la configuración del proxy a partir de variables de entorno. Si esas variables no están definidas, la propiedad se deriva de la configuración del proxy del sistema.
  • Para Linux: lee la configuración del proxy a partir de variables de entorno. Si esas variables no están definidas, la propiedad inicializa una instancia no configurada que omite todas las direcciones.

Las variables de entorno utilizadas para la inicialización de DefaultProxy en Windows y plataformas basadas en Unix son:

  • HTTP_PROXY: el nombre de host o la dirección IP del servidor proxy utilizado en las solicitudes HTTP.
  • HTTPS_PROXY: el nombre de host o la dirección IP del servidor proxy utilizado en las solicitudes HTTPS.
  • ALL_PROXY: el nombre de host o la dirección IP del servidor proxy utilizado en las solicitudes HTTP y HTTPS en caso de que HTTP_PROXY o HTTPS_PROXY no estén definidos.
  • NO_PROXY: una lista de nombres de host separados por comas que deben excluirse del proxy.

PowerShell 7.4 agregó soporte para el algoritmo de compresión Brotli.

Artículos relacionados