我有下面的curl命令,我试图将它转换为powershell,但是我不确定如何处理多头输入和JSON输入。
任何帮助都是非常感谢的。
curl --location --request POST 'https://anypoint.studio.com/cloudhub/api/v2/applications' \
--header 'X-ANYPNT-ENV-ID: 4a96abfd4f5237cf1b64' \
--header 'X-ANYPNT-ORG-ID: bc0d-3b9fd79234ad' \
--header 'Authorization: Bearer 3esede-a44b-29ab8841b508' \
--form 'file=@"/C:/Users/pgi/Downloads/eafdc-flow-proxy-v1.2.jar"' \
--form 'appInfoJson="{
\"domain\": \"testproxy-test\",
\"Version\": {
\"version\": \"4.4.0\"
},
\"properties\": {
\"platform.client_id\": \"8f95qw3sa4b679aaa699cf0f5c6b6\",
\"secure.key\": \"sYf%NJ7F^y&3lNRH*D$@\",
\"env\": \"dev\",
\"platform.client_secret\": \"acF0JHFUEFH8829a481D9c37EF364be7a\"
},
\"propertiesOptions\": {
\"secure.key\": {
\"secure\": true
},
\"anypoint.platform.client_secret\": {
\"secure\": true
}
},
\"region\": \"us-west-1\",
\"monitoringEnabled\": true,
\"monitoringAutoRestart\": true,
\"workers\": {
\"amount\": 1,
\"type\": {
\"name\": \"Micro\",
\"weight\": 0.1,
\"cpu\": \"0.1 vCores\",
\"memory\": \"500 MB memory\"
}
},
\"loggingNgEnabled\": true,
\"persistentQueues\": true
}"' \
--form 'autoStart="true"'发布于 2022-05-31 01:17:45
您可以用curl替换Invoke-WebRequest,用ConvertFrom-Json解析JSON。
$r = Invoke-WebRequest -Uri $uri -Method Post -Body $body
$j = ConvertFrom-Json $r.Content我没有设置$uri和$body的值。我希望这对你来说已经足够了。
更新
第一次答复写得太快了。你可能需要传递头部和身体。
与curl一样,调用-Webrequest功能强大且复杂。您可以在这里找到在线文档:
您需要使用标头和正文参数:
-Headers
指定web请求的标题。输入哈希表或字典。
若要设置UserAgent头,请使用UserAgent参数。不能使用此参数指定用户代理或cookie标头。
当为主体提供Content-Type对象时,将重写与内容相关的标头(如MultipartFormDataContent )。-Body
指定请求的主体。主体是标题后面的请求的内容。您还可以将正文值输送到Invoke-WebRequest。
Body参数可用于指定查询参数列表或指定响应的内容。
当输入是GET请求而主体是IDictionary (通常是哈希表)时,主体作为查询参数添加到URI中。对于其他请求类型(如POST),主体以标准name=value格式设置为请求体的值。
Body参数还可以接受System.Net.Http.MultipartFormDataContent对象。这有助于multipart/form-data请求。当为主体提供MultipartFormDataContent对象时,提供给ContentType、headers或WebSession参数的任何与内容相关的标头都会被MultipartFormDataContent对象的内容标头覆盖。这个特性是在PowerShell 6.0.0中添加的。
看起来您必须创建一个MultipartFormDataContent对象。注意,这是在Windows 6中添加的,所以您不能使用PowerShell内置的默认版本5。如果您还没有安装版本7,您可能需要安装最新版本的版本7(我使用版本7,它很棒)。
因此,对于标题,您可以创建如下所示:
$headers = [ordered]@{
'X-ANYPNT-ENV-ID' = '4a96abfd4f5237cf1b64'
'X-ANYPNT-ORG-ID' = 'bc0d-3b9fd79234ad'
'Authorization' = 'Bearer 3esede-a44b-29ab8841b508'
}然后打个电话,比如:
$r = Invoke-WebRequest -Uri $uri -Method Post `
-Headers $headers -Body $myMultipartFormDataContent我还没有用过MultipartFormDataContent,所以由你来决定。我希望这能为你提供一个好的起点。
https://stackoverflow.com/questions/72441288
复制相似问题