Solución:
Aquí hay una simple línea de PS 3.0 y posterior que funciona y no involucra mucho PS barf:
wget http://blog.stackexchange.com/ -OutFile out.html
Tenga en cuenta que:
-
wget
es un alias paraInvoke-WebRequest
- Invoke-WebRequest devuelve un objeto HtmlWebResponseObject, que contiene muchas propiedades útiles de análisis de HTML como enlaces, imágenes, formularios, campos de entrada, etc., pero en este caso solo estamos usando el contenido sin procesar.
- El contenido del archivo se almacena en la memoria antes de escribirlo en el disco, lo que hace que este enfoque no sea adecuado para descargar archivos grandes.
-
En las instalaciones de Windows Server Core, deberá escribir esto como
wget http://blog.stackexchange.com/ -UseBasicParsing -OutFile out.html
-
Antes del 20 de septiembre de 2014, sugerí
(wget http://blog.stackexchange.com/).Content >out.html
como respuesta. Sin embargo, esto no funciona en todos los casos, ya que
>
operador (que es un alias paraOut-File
) convierte la entrada a Unicode.
Si está utilizando Windows 7, deberá instalar la versión 4 o más reciente de Windows Management Framework.
Puede encontrar que haciendo un $ProgressPreference = "silentlyContinue"
antes de Invoke-WebRequest
mejorará significativamente la velocidad de descarga con archivos grandes; esta variable controla si se representa la IU de progreso.
Si solo necesita recuperar un archivo, puede usar el método DownloadFile del objeto WebClient:
$client = New-Object System.Net.WebClient
$client.DownloadFile($url, $path)
Dónde $url
es una cadena que representa la URL del archivo y $path
representa la ruta local en la que se guardará el archivo.
Tenga en cuenta que $path
debe incluir el nombre del archivo; no puede ser simplemente un directorio.
Hay Invoke-WebRequest
en la próxima versión 3 de PowerShell:
Invoke-WebRequest http://www.google.com/ -OutFile c:google.html