Перевести команды curl в PowerShell - PullRequest
0 голосов
/ 31 октября 2018

У кого-нибудь есть опыт использования API Websense через PowerShell? Мне нужно перевести команды curl (которые у меня работают) в Powershell, чтобы их можно было писать в сценарии. У кого-нибудь есть какие-нибудь ресурсы, которые были бы полезны? Примеры команд curl, которые мне нужно перевести, приведены ниже:

Начать новую транзакцию:

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/start

Добавить управляемую API категорию (все данные в запросе HTTPS):

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories -d "{\"Transaction ID\":\"<transaction_ID_string>\",\"Categories\": [ {\"Category Name\": \"<name_string>\",\"Category Description\":\"<description_string>\",\"Parent\": <numeric_category_ID>}]}"

Добавить URL (все данные в запросе HTTPS):

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/urls -d "{\"Transaction ID\": \"<transaction_ID_string>\",\"Category ID\": <numeric_ID>,\"URLs\":[\"https://www.new_url.com/\"]}" --cacert PolApiServer.crt

Совершить транзакцию:

curl -k -u <username>:<password> -X POST https://<ps_ip_address>:<port>/api/web/v1/categories/commit?TransactionID="<id_string>"

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Вот несколько способов сделать это. 1. скачайте curl.exe и укажите на него переменную, затем передайте ей команду

$curlExe = "C:\download\curl-7.59.0\src\curl.exe"
& $curlExe -i -k -X POST -d '"{\"groupId\": xxxx}"' "https://site/site?access_token=zzzzzz" -s 

Другой будет

 Invoke-RestMethod -uri https://site Get -Headers @{"x-api-key" = "mykey"} -ContentType "application/vnd.api+json" -Credential $adminCredential 

Надеюсь, это поможет

0 голосов
/ 31 октября 2018

Я не собираюсь писать переводчик для вас, но это наверняка возможно ... или вы можете просто запустить curl.exe из PowerShell (очевидно, вам нужно установить curl.exe на машине, которую вы используете запустить команды curl из PowerShell) ..

Посмотрите на Invoke-WebRequest или Invoke-RestMethod - обе эти функции демонстрируют скручиваемое поведение.

Edit:

Итак, команда curl в PowerShell - это не что иное, как псевдоним для Invoke-WebRequest .. запустите: Get-Alias -Definition Invoke-WebRequest и просмотрите выходные данные. Каждый параметр в Invoke-WebRequest соответствует переключателю curl. Все, что вам нужно сделать, это просмотреть документацию curl и сопоставить их параметры с Invoke-WebRequest параметрами. Многое из того, что вы спрашиваете, зависит от API / сайта, на который вы отправляете свой HTTP-запрос (и curl, и Invoke-WebRequest отправляют HTTP-запросы). Например, аутентификация на API / сайте .. если сайт использует Basic Auth, вы бы сделали что-то подобное в PowerShell:

Invoke-WebRequest -Method Post -Uri "https://<ps_ip_address>:<port>/api/web/v1/categories/start" -Headers @{"Authorization" = "Basic %your_encoded_credentials_here%" }

.. Переключатель curl -X представляет метод HTTP. Параметр Invoke-WebRequest -Method служит для той же цели. Похоже, вам действительно нужно прочитать Invoke-WebRequest или Invoke-RestMethod - единственная разница в два - это возвращение, которое они вам дают.

Я думаю, что ваша путаница в том, как дифференцировать и, в конечном счете, интерпретировать, от curl до Invoke-WebRequest, связана с тем фактом, что вы, кажется, новичок в HTTP-запросах. Обе эти команды отправляют HTTP-запросы - они просто используют разные ключи - если вы узнаете, как каждая команда обрабатывает HTTP-запросы, вы можете интерпретировать от curl до Invoke-WebRequest ..

Подробнее здесь: Invoke-WebRequest и Invoke-RestMethod

Существует также множество примеров того, как интерпретировать curl до Invoke-WebRequest / Powershell только на этом сайте ... вам просто нужно освежить в памяти запросы HTTP и то, как curl обрабатывает их и различия как Invoke-WebRequest обрабатывает их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...