Как прочитать URL-адрес odata и сохранить его как файл json с помощью скрипта PowerShell - PullRequest
0 голосов
/ 30 июня 2018

Когда я пытаюсь прочитать этот URL с помощью приведенной ниже команды PowerShell, я не могу открыть страницу

Start-Process "iexplore.exe" "https://sitename//odata/ScheduledJobs?$format=json&$expand=Application($select=Id,Name,AssetId;$expand=Asset($select=Id,Name)),JobType,JobInstances($filter=StartTime+eq+null;$orderby=NextRunTime+asc;$top=1),CompletedJobs($orderby=StartTime+desc;$top=1;$expand=State;$select=Id,StateId,StartTime,EndTime)&$top=20&$orderby=ScheduleStart&$filter=Enabled+eq+true&$count=true"

Get-Process | Out-File -filepath C:\Users\S.Papolu\Downloads\ScheduledJobs1.json

Как открыть этот URL в IE и загрузить вывод json?

Пожалуйста, помогите мне в этом, ценю вашу помощь, пожалуйста, отправьте код

1 Ответ

0 голосов
/ 30 июня 2018

У вас есть два вопроса здесь. Я думаю, что вы ответили на первый вопрос сами. Как открыть URL в Internet Explorer? Ваше заявление start-process делает это.

Второй вопрос может быть не связан с первым: как мне загрузить JSON в файл.

Вы можете посмотреть командлет invoke-webrequest для загрузки содержимого URL-адреса в файл. Вы хотите что-то вроде

$uri = "https://sitename//odata/ScheduledJobs?`$format..."
iwr -Uri $uri -OutFile C:\Users\S.Papolu\Downloads\ScheduledJobs1.json -UseBasicParsing

Обратите внимание на использование двойных кавычек для содержимого URL и обратной черты перед $ в содержимом. Вам нужно что-то вроде этого, чтобы сказать powershell, чтобы он пропускал $ through как литерал, вместо того, чтобы пытаться подставить здесь переменную с именем FORMAT.

Если вам нужны учетные данные для доступа к https://sitename, вы можете использовать параметры certificate или certificatethumbprint, если ваш сайт использует сертификаты клиентского доступа, параметр UseDefaultCredentials, если ваши текущие учетные данные работают на сайте, или вам может потребоваться создать коллекцию заголовков с заголовком авторизации и передать действительный токен.

$headers=@{"Authorization"="Bearer Your_BearerTokenHere"}
iwr -Uri $uri -OutFile 'C:\Users\S.Papolu\Downloads\ScheduledJobs1.json' -UseBasicParsing -Headers $headers

Вы также можете попробовать командлет invoke-restmethod, если uri является чистой конечной точкой REST.

Наконец, вы можете попробовать вариант этого, чтобы получить JSON в локальную переменную с чем-то вроде

$response = iwr ....
$json = $response.Content | ConvertFrom-JSon

, если вы действительно не пытаетесь сохранить содержимое в файл для последующего использования.

...