Ejecute el comando Curl en PowerShell [2 formas]
En PowerShell 3.0 y superiores, tenemos los cmdlets Invoke-WebRequest e Invoke-RestMethod; curl es un alias de Invoke-WebRequest en PowerShell. La mayoría de los estudiantes lo confunden con el cmdlet Invoke-RestMethod. En PowerShell 7 y versiones posteriores, el cmdlet Invoke-RestMethod es el cmdlet predeterminado para enviar solicitudes de servicios web RESTful.
Es otro cmdlet integrado en PowerShell diseñado principalmente para trabajar con API RESTful y servicios web. Simplifica el envío y la gestión de solicitudes web al analizar automáticamente la respuesta como XML o JSON y admite la autenticación OAuth básica y la autenticación básica.
Sin embargo, Invoke-WebRequest y curl todavía están disponibles en PowerShell, que envía solicitudes HTTPS y HTTP a las API y servidores web. El cmdlet Invoke-WebReqest proporciona más flexibilidad que el cmdlet Invoke-RestMethod a la hora de gestionar protocolos que no son HTTP y personalizar solicitudes.
¿Aún necesitas una aclaración? ¿Quieres comprobar los alias de los comandos? Puede usar el cmdlet Get-Alias para obtener todos los alias con sus respectivos nombres, versiones y fuentes en PowerShell. Sin embargo, Get-Comman curl solo mostrará el alias con el comando, la versión y la fuente respectivos.
Por lo tanto, utilizar cmdlets nativos de PowerShell será más apropiado que utilizar alias. Sin embargo, aprenderemos ambos (Invoke-WebRequest y curl) y le permitiremos elegir según sus requisitos.
Usando el cmdlet Invoke-WebRequest
Utilice el cmdlet Invoke-WebRequest para recuperar datos de la URL especificada en PowerShell.
Utilice el cmdlet Invoke-WebRequest:
Invoke-WebRequest -Uri "https://www.example.com"PRODUCCIÓN :
StatusCode : 200
StatusDescription : OK
Content :
<title>Example Domain</title>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" conten... rawcontent : http ok age: vary: accept-encoding x-cache: hit content-length: cache-control: max-age="604800" content-type: text charset="UTF-8" date: sat apr gmt exp... forms headers images inputfields links information... innertext="More" outerhtml="<A" href="https://www.iana.org/domains/example">More information...; outerText=More
information...; tagName=A; href=https://www.iana.org/domains/example}}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 1256Usamos el cmdlet Invoke-WebRequest con el parámetro -Uri para obtener contenidos de la página web especificada en Internet. El parámetro -Uri se utilizó para especificar el Identificador uniforme de recursos (URI) del recurso de Internet (servicio web o página) al que se envió una solicitud web.
Tenga en cuenta que el parámetro -Uri solo admite HTTP y HTTPS. Por lo tanto, el uso de este parámetro es obligatorio, pero el nombre del parámetro -Uri es opcional, lo que significa que podemos especificar la URL de una página web o servicio sin usar el parámetro -Uri. nombre.
Al regresar al cmdlet Invoke-WebRequest, envía solicitudes HTTP y HTTPS a la página web o servicio determinado, analiza la respuesta y devuelve la colección de imágenes, enlaces y otros elementos HTML esenciales.
Puede ver el resultado anterior como demostración; obtuvimos StatusCode, StatusDescription, Content, RawContent y otra información importante. También podemos almacenar esta respuesta en una variable y recuperar información específica usando notación de puntos. Por ejemplo, en el siguiente código, utilizamos la notación de puntos para acceder a la propiedad Content de la respuesta.
Utilice el cmdlet Invoke-WebRequest:
$response = Invoke-WebRequest -Uri "https://www.example.com"
$response.ContentPRODUCCIÓN :
<title>Example Domain</title>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
Alternativamente, podemos usar Invoke-WebRequest como iwr para evitar pulsaciones de teclas. El uso de iwr no afectará los resultados; Seguiremos obteniendo el mismo resultado.
Usando el comando curl
Utilice el cmdlet curl para recuperar datos de la URL especificada en PowerShell.
Utilice el comando curl:
curl "https://www.example.com"PRODUCCIÓN :
StatusCode : 200
StatusDescription : OK
Content :
<title>Example Domain</title>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" conten... rawcontent : http ok age: vary: accept-encoding x-cache: hit content-length: cache-control: max-age="604800" content-type: text charset="UTF-8" date: sat apr gmt exp... forms headers images inputfields links information... innertext="More" outerhtml="<A" href="https://www.iana.org/domains/example">More information...; outerText=More
information...; tagName=A; href=https://www.iana.org/domains/example}}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 1256Mira, obtuvimos el mismo resultado que el comando Invoke-WebRequest -Uri "https://www.example.com" porque curl es el alias del Invocar-WebRequest. Entonces, nuevamente, podemos almacenar la respuesta en una variable y acceder a su propiedad Content usando la notación de puntos de la siguiente manera, que también debe ser los mismos resultados que recibimos al usar Invoke-WebRequest.
Utilice el comando curl:
$response = curl "https://www.example.com"
$response.ContentPRODUCCIÓN :
<title>Example Domain</title>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>Se trata de cómo ejecutar el comando curl en PowerShell.
