Question:
I was trying to run curl
command using PowerShell.
below is the curl
command
1 2 |
curl --location --request POST "controller/lttrouter/v1/TestResult/process-data-results/" --form "synthesisreport=@"C:\Users\subu\Desktop\testdemo\SynthesisReport.csv";type=text/csv" --form "createdBy=subu" --form "jiraStoryId=LT1235" --form "jiraTaskId=LT1236" --form "tag=demo-test" |
Above curl
is working on the Command Prompt.
I tried below PowerShell code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$CurlExecutable = "C:\curl-7.65.1-win64-mingw\bin\curl.exe" $path="C:\Users\subu\Desktop\Test\SynthesisReport.csv" Write-Host "CurlFile" $CurlFile $CurlArguments = '--location','--request', 'POST', '"controller/lttrouter/v1/TestResult/process-data-results/"', '--form', 'synthesisreport=@$path', '--form', 'createdBy=subu', '--form', 'jiraStoryId=LT1235', '--form', 'jiraTaskId=LT1236', '--form', 'tag=demo-test' & $CurlExecutable @CurlArguments |
I am getting below error
1 2 3 4 5 6 |
curl.exe : curl: (26) Failed to open/read local data from file/application At line:13 char:1 + & $CurlExecutable @CurlArguments + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (curl: (26) Fail...ile/application:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError |
Where I am doing the mistake, please suggest.
Answer:
Don’t use splatting in this case, just pass the argument list ($
instead of @
), properly add the quotes and make sure $path gets expanded:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$curlExecutable = "C:\curl-7.65.1-win64-mingw\bin\curl.exe" $path = "C:\Users\subu\Desktop\Test\SynthesisReport.csv" Write-Host "CurlFile" $curlExecutable $curlArguments = "--location","--request", "POST", "`"controller/lttrouter/v1/TestResult/process-data-results/`"", "--form", "`"synthesisreport=@`"$path`";type=text/csv`"", "--form", "`"createdBy=subu`"", "--form", "`"jiraStoryId=LT1235`"", "--form", "`"jiraTaskId=LT1236`"", "--form", "`"tag=demo-test`"" & $curlExecutable $curlArguments |