Invocar WebRequest en PowerShell 2.0

Migel Hewage Nimesha 15 febrero 2024
  1. Operador miembro estático de PowerShell ::
  2. Cree una solicitud web con la clase WebRequest para invocar WebRequest en PowerShell 2.0
Invocar WebRequest en PowerShell 2.0

A partir de la versión 3.0 de PowerShell, se introdujo el cmdlet Invoke-WebRequest para enviar solicitudes web HTTP o HTTPS y obtener la respuesta.

Antes de eso, en la versión 2.0 de PowerShell, la biblioteca de clases base .Net se usaba para enviar solicitudes web. Tanto las clases WebRequest como HttpWebRequest se pueden utilizar para este propósito.

La fuerza de PowerShell es que le permite acceder a las clases y métodos integrados .Net sin problemas.

Operador miembro estático de PowerShell ::

La ventaja más significativa de PowerShell es que ha brindado la capacidad de acceder a las clases .Net dentro de los scripts de PowerShell. El operador de miembro estático llama a los métodos y propiedades estáticos dentro de una clase de biblioteca .Net.

Digamos que queremos acceder a la propiedad Ahora de la clase DateTime. Lo ideal sería devolver la fecha y hora actual del sistema.

Podemos llamar a esta propiedad usando PowerShell, de la siguiente manera.

[datetime]::Now

Producción:

Operador de miembro estático de PowerShell - Salida

Como era de esperar, se han impreso la fecha y la hora actuales.

Cree una solicitud web con la clase WebRequest para invocar WebRequest en PowerShell 2.0

La clase WebRequest es un resumen basado en .NET implementado para invocar una solicitud contra un URI (Identificador Uniforme de Recursos) determinado. Reside en el paquete System.Net del framework .NET.

La siguiente es la sintaxis para invocar una solicitud web desde PowerShell.

[System.Net.WebRequest]::Create(uri)

Aquí, uri es la URI del sitio web.

Hagamos una simple solicitud GET a https://google.com.

$req = [System.Net.WebRequest]::Create('https://google.com')

Esto crearía un objeto PowerShell $req que se puede manipular más. Podemos listar las propiedades y métodos disponibles para el objeto $req.

$req | Get-Member

Producción:

Invocar WebRequest en PowerShell 2.0 - Salida 1

Podemos usar el método GetResponse() para acceder al objeto de respuesta de esta solicitud.

 $resp = $req.GetResponse()

Escriba el objeto $resp en la ventana de la consola de PowerShell.

Invocar WebRequest en PowerShell 2.0 - Salida 2

El mismo procedimiento se puede seguir con alguna información adicional cuando necesite procesar una solicitud POST. En ese caso, debe utilizar el método de solicitud como POST.

Además, el tipo de contenido de la solicitud y el cuerpo deben construirse y pasarse de la siguiente manera.

$request = [System.Net.WebRequest]::Create('https://abc.com');
$request.Method = "POST";
$request.ContentType = "application/x-www-form-urlencoded";
$bytes = [System.Text.Encoding]::ASCII.GetBytes("name=tony&age=55");
$request.ContentLength = $bytes.Length;

$requestStream = $request.GetRequestStream();
$requestStream.Write( $bytes, 0, $bytes.Length );
$requestStream.Close();
$request.GetResponse();

Puede usar la implementación anterior para continuar con una solicitud POST usando la clase WebRequest.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.