Что такое PowerShell Equivant для `curl -L https://unpkg.com/@pnpm/self-installer |node`? - PullRequest
0 голосов
/ 05 февраля 2019

Я использую GitLab.com с Windows Runner, поэтому мы обычно используем PowerShell вместо Bash для выполнения сценариев в консоли.Я пытаюсь использовать pnpm , и примеры, которые они приводят, предлагают следующее

$ curl -L https://unpkg.com/@pnpm/self-installer | node
$ install pnpm

Какая версия PowerShell для вышеперечисленных запросов curl передана в node?

Я пробовал оба Invoke-RestMethod и использовал псевдоним curl изнутри PowerShell, например

PS> curl https://unpkg.com/@pnpm/self-installer | node

, но получал

SyntaxError: Неверный или неожиданный токен

Также из документов curl я знаю - требуется местоположение .

1 Ответ

0 голосов
/ 05 февраля 2019

В качестве наилучшей практики в сценариях я бы предложил явно использовать имена параметров и передавать правильный тип, а не давать интерпретатору указание для вас (Uri занимает System.Uri, а System импортируется в PowerShell какпо умолчанию):

$uri = [Uri]'https://unpkg.com/@pnpm/self-installer'
$js = Invoke-RestMethod -Uri $uri

Причина вашей синтаксической ошибки?символ @ является особенным в PowerShell для функции под названием Splatting.

Когда я запустил вышеизложенное, он выплевывает содержимое сценария js на мою консоль.Тогда можно предположить, что node принимает cli, ввод по каналу и находится в вашем PATH:

$js | node

Другое предположение: у вас есть install в вашем PATH, или сценарий создает какой-то интерактивный терминал:

$ install pnpm

--location здесь не требуется, поскольку Invoke-RestMethod по умолчанию будет выполнять перенаправление до 5 переходов (это можно настроить с помощью MaximumRedirection).

...