reconoce - invoke-webrequest powershell
Convertir un curl en PowerShell Invoke-WebRequest (1)
Debe colocar los parámetros de formulario en un hash y asegurarse de tener el contenido del archivo, no el nombre del archivo, en la solicitud.
Tratar:
$body = @{ format = "XYZUser License Upload"; file1 = $(gc $FullPathTSVToSend) }
Invoke-WebRequest -Body $body -Uri "https://website.com/action/directSubscriptionUpload" -Credential $mycreds -Verbose -WebSession $myWebSession -OutFile $outFilePath -Method Post -ContentType "multipart/form-data"
Estoy tratando de convertir estos dos comandos curl
. Simplemente no estoy seguro de sacar lo detallado. Y si mi cookie necesita I2KBRCK = 1. Y cómo hacer un volcado de encabezado.
%CURL_FOLDER%/curl --verbose --insecure --cookie-jar %OUTPUT_FOLDER%/cookiejar.txt --cookie I2KBRCK=1 --data [email protected] --data password=pass --dump-header %OUTPUT_FOLDER%/headers_received_1.txt --output %OUTPUT_FOLDER%/curl_output_1.html --location https://website.com/action/doLogin > %OUTPUT_FOLDER%/curl_verbose_output.txt 2>&1
%CURL_FOLDER%/curl --verbose --insecure --cookie %OUTPUT_FOLDER%/cookiejar.txt --form file1=@%TSV_UPLOAD_FILE% --form format="XYZ User License Upload" --form email=email.org --dump-header %OUTPUT_FOLDER%/headers_received_2.txt --output %OUTPUT_FOLDER%/curl_output_2.html https://website.com/something >> %OUTPUT_FOLDER%/curl_verbose_output.txt 2>&1
Convertí los comandos curl en este powershell.
$outFilePath = ''C:/Users/blah/Desktop/curl_output_1.html''
$outFilePathVerbose = ''C:/Users/blah/Desktop/curl_verbose_output.txt''
$secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("[email protected]", $secpasswd)
Invoke-WebRequest -Uri "https://website.com/doLogin" -Credential $mycreds -Verbose -SessionVariable myWebSession -Method Post -OutFile $outFilePath
Invoke-WebRequest -InFile $someFile -Uri "https://website.com/something" -Credential $mycreds -Verbose -WebSession $myWebSession -Method Post -OutFile $outFilePath
Traté de convertir el segundo comando curl en powershell de otra manera y obtuve un error 404 en lugar de un error 500 ...
$body = @"
format = "XYZUser License Upload"
file1 = $FullPathTSVToSend
"@
$gist = Invoke-WebRequest -Body $body -Uri "https://website.com/action/directSubscriptionUpload" -Credential $mycreds -Verbose -WebSession $myWebSession -OutFile $outFilePath -Method Post -ContentType "multipart/form-data"
Edité con powershell con el nuevo código que sugeriste ...
$content = Get-Content $FullPathTSVToSend
$body = @{ ''format'' = "XYZUser License Upload"; ''file1'' = $( $content); ''email'' ="[email protected]" }
Invoke-WebRequest -Uri "https://website.com/doLogin" -Credential $mycreds -Verbose -SessionVariable myWebSession -Method Post -OutFile $outFilePath
Invoke-WebRequest -Body $body -Uri "https://website.com/something" -Credential $mycreds -Verbose -OutFile $outFilePath2 -Method Post -ContentType "multipart/form-data" -WebSession $myWebSession
Sin embargo, sigo obteniendo el error 404 para el segundo Invoke-WebRequest. Creo que tal vez haya algo más que deba pasar desde el primer comando Invoke-WebRequest. Pero myWebSession debe tener esa cookie I2KBRCK = 1 del primer comando curl.