Hola. Dices que estás usando un Batch-script, pero estás usando Powershell por que te has dado cuenta de las limitaciones de Batch (ya que no sirve para descargar un archivo)... y es por ello que te convendría mucho más
desarrollar todo el script en Powershell. Deberías olvidar Batch, más siendo administrador de un server... Powershell fue creado para satisfacer las necesidades de un admin.
ahora me diran que utilice wget, esto funciona super bien, pero como es un script que al final lo convierto a .exe, quedo en las mismas ya que al bajar wget queda corrupto y no funciona.
Eso no lo entiendo muy bien, ya que siempre tienes al alcance la posibilidad de tener el script y wget.exe ambos en el mismo directorio, es decir, una copia de wget.exe que hayas descargado bien con Firefox por ejemplo... y además también puedes empacar el script y wget en el mismo archivo (.exe), así que no le veo el problema.
...Eso sería una solución. De todas formas lo de recurrir a Batch y a programas de terceros como WGET teniendo Powershell lo veo innecesario, así que intentaré ofrecerte ayuda en ese sentido:
Primero prueba con una sintaxis más completa del cmdlet
Invoke-WebRequest:
Invoke-WebRequest -URI "http://.../archivo.dat" -Method "Default" -DisableKeepAlive -TimeoutSec "60" -OutFile ".\archivo.dat"
Si eso te da algún tipo de problema, puedes probar usando la clase
System.Net.WebClient de
.NET Framework:
Script.ps1$url = "http://.../archivo.dat"
$output = ".\archivo.dat"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile( $url, $output )
$wc.Dispose()
Exit(0)
...si realmente quieres hacer esto desde Batch, entonces simplificarías la ejecución de Powershell de la siguiente manera:
Script.cmd@Echo OFF
SET "url=http://.../archivo.dat"
SET "output=.\archivo.dat"
"Powershell.exe" "(New-Object System.Net.WebClient).DownloadFile(\"%url%\", \"%output%\")"
Exit /B 0
Si esta solución de la clase
System.Net.WebClient te sigue "descargando un archivo corrupto", entonces yo creo que el problema no tiene que ver relación con el modo en el que estás descargando el archivo... sino con alguna otra cosa.
Saludos!