在Powershell中用于上传apk文件的curl等效命令是什么?

时间:2018-08-23 13:42:43

标签: powershell

我正在尝试使用Perfecto执行CI / CD,因此,在我的Bamboo构建完成后,我试图将文件上传到Perfecto。

当我们有Linux服务器时,我正在尝试使用以下cURL命令。

curl -X POST --upload-file test.apk 'https://****.perfectomobile.com/services/repositories/media/PRIVATE:test.apk?operation=upload&user=<email>&password=<password>&overwrite=true'

现在我们的服务器已更改为Windows,因此我需要一个Powershell脚本,可以将其用作Bamboo中的内联脚本。

您能告诉我什么是Windows Powershell中的等效脚本。

非常感谢。

1 个答案:

答案 0 :(得分:1)

# Gather your information.
$email = "myEmail@website.com";
$password = "powershellR0cks!";
$subDomain = "****";
$url = "https://$subDomain.perfectomobile.com/services/repositories/media/PRIVATE:test.apk?operation=upload&user=$email&password=$password&overwrite=true";
$filePath = ".\test.apk";

# Make the request.
$response = Invoke-WebRequest -Uri $URL -Method Post -InFile $filePath -ContentType "application/octet-stream";

# Check for success.
if (-not ($response.StatusCode -eq 200)) {
    throw "There was an error uploading the APK manifest.";
}

您可能要检查-ContentType的值,但是我认为这是正确的。如果您不想的话,则不必包括方案(HTTPS),并且PowerShell中的分号是可选的,但是如果需要,您可以包括它们。

$response变量是一个HtmlWebResponseObject,具有响应的内容,状态码和许多其他有用的信息。您可以通过运行$response | Get-Member来检查对象上可用的属性和方法。

最后,Invoke-WebRequest cmdlet还具有其他可能对您有用的参数,例如-Credential-Headers等。

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-5.1

作为一个旁注,如果您运行Get-Alias -Name "curl",则可以看到,只要在PowerShell中使用curl,您实际上就在调用Invoke-WebRequest。您可以根据需要使用curl别名,但是在自动化中使用别名通常不是一个好主意,因为可以对其进行修改或删除。