powershell - 如何在 PowerShell 中将 curl 结果作为变量获取
问题描述
使用 Powershell,我想运行以下命令并将其存储status_url
为变量。我无法status_url
直接引用。
$upload = curl.exe -u username:password -i -F filedata=@filename.csv https://sitename.com/csv
$upload
存储以下信息:
PS C:\Scripts> $upload HTTP/2 200 内容类型:文本/html;charset=utf-8 严格传输安全:max-age=31536000;includeSubDomains content-security-policy: script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdnjs.cloudflare.com https://cdn.ravenjs.com https://cdn.mxpnl.com https://ssl.google-analytics.com https: // .googleapis.com https://cdn.segment.com https://d2yyd1h5u9mauk.cloudfront.net https:// .typeform.com;connect-src 'self' https://api.mixpanel.com https://web.delighted.com https://a pi.segment.io;object-src 'self';style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://使用。 https://fonts.gstatic.com https://fonts.googleapis.com;font-src 'self' https://cdnjs.cloudflare.com https://use.fontawesome.com https://fonts.gstatic .com;x-xss-保护:1;mode=block x-content-type-options: nosniff referrer-policy: strict-origin set-cookie: session=d9337cbf2c313e12_5c24fe8c.Bg33P1e8TOQs9sDCpRWwOoSDDao; 域=.rolepoint-qa.com;安全的; 仅http;路径=/ x-cloud-trace-context:2586e15ea742ba3202516d6c9c58d3d2;o=1 日期:2018 年 12 月 27 日星期四 16:32:12 GMT 服务器:Google 前端内容长度:94 到期:2018 年 12 月 27 日星期四 16:32:12 GMT 缓存控制:私有
{“结果”:{“status_url”:“ https://sitename.com/csv/v1/status/1234567 ”}}
我怎样才能引用它status_url
本身,以便我可以在 GET 中使用它来检查上传状态?
输出是 JSON,我需要解析 $upload 还是有办法引用$upload.status_url
解决方案
我认为($upload | ConvertFrom-Json).result.status_url
由于 -i 参数而无法正常工作,它将响应正文与标头混合在一起,因此您没有获得有效的 json。删除它可以吗?如果您需要保留它,则可能使用 Invoke-Webrequest 代替。您可以尝试下面的代码(我无法测试)。如果它正常工作,那么只需浏览 $response 对象(响应正文将在 $response.Content 中)。
$password = ConvertTo-SecureString "yourpassword" -AsPlainText -Force
$user = "yourUser"
$params = @{
Uri = "https://sitename.com/csv"
InFile = "path/to/your/file.csv"
Method = "Post"
Credential = [PSCredential]::new($user, $password)
}
$response = Invoke-Webrequest @params
您还可以尝试使用正则表达式从混合响应中提取该 url,例如:
$Upload -match 'https://sitename.com/csv/v1/status/\d*'
$Matches[0]
推荐阅读
- akka - 复杂主键的安全 persistenceId 编码器
- c++ - 用联合初始化 C++ 结构的正确方法是什么?
- html - 是否有可能溢出-x:可见和溢出-y:没有固定宽度的滚动?
- redmine - Redmine - 如何将上传的文件附加到项目中?
- node.js - meteortesting mocha --full-app 正在执行 0 个测试
- python - PyCharm 看不到与当前项目相同命名空间内的包
- php - preg_replace_callback(): 未知修饰符 '/'
- c - CreatePen returning NULL on window resizing
- c# - 为什么模拟存储库需要一个虚函数,而模拟 IRepository 会覆盖现有函数?
- node.js - await 总是抛出 SyntaxError:await 仅在 sequelize 的异步函数中有效