将curl转换为PowerShell Invoke-WebRequest

前端之家收集整理的这篇文章主要介绍了将curl转换为PowerShell Invoke-WebRequest前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图转换这两个curl命令.我只是不确定输出详细信息.如果我的cookie需要I2KBRCK = 1.以及如何进行标头转储.
%CURL_FOLDER%\curl --verbose --insecure --cookie-jar %OUTPUT_FOLDER%\cookiejar.txt --cookie I2KBRCK=1 --data user@web.org --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

我将curl命令转换为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 ("user@web.org",$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

我尝试将第二个curl命令转换为PowerShell另一种方式,并得到404错误而不是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"

我用powershell编辑了你建议的新代码……

$content = Get-Content  $FullPathTSVToSend
$body = @{ 'format' = "XYZUser License Upload"; 'file1' = $( $content); 'email' ="user@web.org"  }
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

但是,我仍然收到第二个Invoke-WebRequest的404错误.我想也许我需要从第一个Invoke-WebRequest命令传递一些东西.但myWebSession应该从第一个curl命令获得cookie I2KBRCK = 1.

@H_301_18@

解决方法

您需要将表单参数放入哈希中,并确保在请求中包含文件内容,而不是文件名.

尝试:

$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"
@H_301_18@ @H_301_18@

猜你在找的Linux相关文章