Как получить результаты скручивания как переменную в PowerShell - PullRequest
0 голосов
/ 27 декабря 2018

В 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 content-type: text / 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 -аналитика.com http s: //.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://use.fontawesome.com 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-protection: 1;mode = block x-content-type-options: nosniff referrer-policy: set-cookie строгого происхождения: session = d9337cbf2c313e12_5c24fe8c.Bg33P1e8TOQs9sDCpRWwOoSDDao;Домен = .rolepoint-qa.com;Безопасный;HttpOnly;Путь = / x-cloud-trace-context: 2586e15ea742ba3202516d6c9c58d3d2; o = 1 дата: чт, 27 декабря 2018 16:32:12 GMT сервер: Google Frontend длина контента: 94 истекает: четверг, 27 дек 2018 16:32:12Кэш-контроль GMT: частный

{"result": {"status_url": "https://sitename.com/csv/v1/status/1234567"}}

Как я могу просто сослаться на сам status_url, чтобы я мог использовать его в GETпроверить состояние загрузки?

Вывод в формате JSON, нужно ли анализировать $ upload или есть способ ссылки $upload.status_url

1 Ответ

0 голосов
/ 27 декабря 2018

Я думаю, ($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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...