2011-12-14 14 views
9

Actualmente estoy cargando un archivo a través de un HTTP POST con una llamada como ésta:PowerShell equivalente de HTTP POST rizo para transferencia de archivos

curl --verbose --data-binary @C:\Projects\TestUploadFiles\TestFile1.csv "http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n" 

Esto funciona bien. Sin embargo, actualmente tengo que cargar unos 3000 archivos diariamente, todos los archivos de mi directorio. Estaba pensando en escribir un archivo por lotes que tiene múltiples comandos cURL, uno para cada archivo. Pero esto me dejaría con la sobrecarga de abrir y cerrar la conexión una vez para cada archivo, ¿verdad?

Por lo tanto, estoy considerando PowerShell. No estoy familiarizado con esto, pero creo que podría usar WebRequest para este propósito.

¿Sería esta una buena opción? Cualquier punteros de muestra de código?

Respuesta

14

En teoría el siguiente ...

curl --verbose --data-binary @C:\Projects\TestUploadFiles\TestFile1.csv "http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n" 

que pueda ser reemplazado mediante el uso de System.Net.WebClient.UploadFile. Por ejemplo, para cargar todos los archivos CSV en el directorio actual:

$wc = new-object System.Net.WebClient 
ls *.csv | foreach { 
    $wc.UploadFile('http://client.abc.com/submit?username=UserX&password=PasswordHere&app=test1&replacejob=TestNewJob&startjob=n', $_.FullName) 
} 
+0

Gracias Scott! Esto es trabajo para mí. – Sylvia

+0

¡Me alegra oírlo! –