Показать полную графическую версию : [решено] Запуск скрипта c github с параметрами
Запускаю скрипт powershell через файл .bat
@echo off
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}"; "& {Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1' | Invoke-Expression}"
pause
exit
В самом скрипте powershell есть возможность указать параметры, но не могу их передать через cmd.
Если запускать напрямую через терминал powershell, то получилось передать параметры вот так
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Invoke-Expression "& { $(Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1') } -param1 -param2 -param3"
но важен именно запуск через bat файл, а там сыпет ошибками или просто запускает скрипт без параметров...
Serguei Kouzmine
25-06-2022, 07:40
а почему же именно через бат ? объясните
на двух стульях сложно усидеть
Для меня это просто удобнее, запускать различные скрипты с гитхаба через двойной клик по файлу
DJ Mogarych
25-06-2022, 12:08
На скрипт Powershell можно создать ярлык и запускать его точно так же.
powershell -f "C:\temp\script.ps1" -executionpolicy bypass
DJ Mogarych,
скрипт .ps1 находится на гитхабе
DJ Mogarych
25-06-2022, 12:36
Создайте .ps1 с тем, что вы запускаете через терминал PS, и сделайте на него ярлык.
-Command одной строкой надо, а там две получается. Видимо нужно убрать две " в середине (где "; " оставить ; ).
Sham,
убрал
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}; & {Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1' | Invoke-Expression}"
в таком варианте тоже скрипт запускает, но как правильно указать ему параметры ?
Serguei Kouzmine
25-06-2022, 18:40
вот так например
powershell.exe -executionpolicy bypass -command "&{ write-host ('processing arguments: {0}' -f ($args -join ',' )) }" a b c d
processing arguments: a,b,c,d
Serguei Kouzmine,
подскажите пожалуйста как это все соединить ? с предыдущим моим постом
Serguei Kouzmine
25-06-2022, 20:52
запустить любимый тексторый редактор и написать код :- )
кто же знает какие аргументы просит скрипт который вы скачиваете из враждебного интернета и запускаете в mac brew style (вероятно этим хитроумно обходя наивную систему информационной безопасности места работы)
когда это вскроется - найдут всех
так что вы уж сами
Вы передаёте параметры в script block и это работает, а выше уже он изменён на пайп внутри блока. Нужно типа этого: "&{...} -param1 -param2 -param3" | Invoke-Expression
Sham,
получилось так
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}; &{Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1'} -param1" | Invoke-Expression
но окно терминале не открывается даже
Serguei Kouzmine
25-06-2022, 23:53
потому что опять синтаксическая ошибка в one-liner'е
скорее всего вам надо не "копипастить" а творчески перерабатывать фрагменты кода которые вам предлагают
исключтельно для ознакомления и без каких бы то ни было гарантий
вся команда должна быть в кавычках, а двойные кавычки внутри дублируются. Вроде так
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}; ""& { $(Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1') } -param1 -param2 -param3"" | Invoke-Expression"
вот это $(...) тоже нельзя убирать, оно раскрывается внутри строки в код из скрипта.
Serguei Kouzmine
26-06-2022, 00:30
Вы передаёте параметры в script block и это работает, а выше уже он изменён на пайп внутри блока. Нужно типа этого: "&{...} -param1 -param2 -param3" | Invoke-Expression »
@Sham не забудьто про значения
to pass parameters have to include entire "$command -param1 $param1 -param2 $param2 ..." line
in a string and then pass that string to the Command parameter.
https://adamtheautomator.com/invoke-expression/
значение можно передать в одинарных кавычках -param1 'с пробелом'. Если в двойных, то нужно двойное экранирование -param1 """"с пробелом""""
Sham,
заработало, только нужно еще добавить кавычек, а то была ошибка "В строке отсутствует завершающий символ"
powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12}; """"& { $(Invoke-WebRequest -UseBasicParsing 'https://raw.githubusercontent.com/test/main/test.ps1') } -param1 -param2 -param3"""" | Invoke-Expression"
Спасибо вам большое за помощь.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.