I am trying to convert these two curl
commands. I am just unsure on outputing the verbose. And if my cookie needs I2KBRCK=1. And how to do a header dump.
%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
I converted the curl commands into this 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
I tried to convert the second curl command into powershell another way and got a 404 error instead of a 500 error...
$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"
I edited with powershell with the new code that you suggested...
$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
However, I am still getting the 404 error for the second Invoke-WebRequest. I think maybe there is something else I need to pass from the first Invoke-WebRequest command. But the myWebSession should have that cookie I2KBRCK=1 from the first curl command.
curl in PowerShell uses Invoke-WebRequest . From PowerShell 3.0 and above, you can use Invoke-WebRequest , which is equivalent to curl .
The conclusion is that if you need to use the curl (as same as in the Windows command prompt) in PowerShell then you need to call the curl executable( curl.exe ) directly. Else, you should stick to the PowerShell curl alias which resolves to the Invoke-WebRequest cmdlet under the hood.
The Invoke-WebRequest cmdlet sends HTTP, HTTPS, FTP, and FILE requests to a web page or web service. It parses the response and returns collections of forms, links, images, and other significant HTML elements. This cmdlet was introduced in Windows PowerShell 3.0.
Invoke-RestMethod is perfect for quick APIs that have no special response information such as Headers or Status Codes, whereas Invoke-WebRequest gives you full access to the Response object and all the details it provides.
You need to put the form parameters into a hash and make sure you have the content of the file, not the file name, in the request.
Try:
$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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With