Перетаскивание к сценарию Powershell

Я думал, что у меня был ответ на это, но чем больше я играю с ним, тем больше я рассматриваю его как недостаток дизайна Powershell.

Я хотел бы перетащить (или использовать Отправление - Для механизма) для передачи нескольких файлов и/или папок как массив к сценарию Powershell.

Сценарий тестирования

#Test.ps1
param ( [string[]] $Paths, [string] $ExampleParameter )
"Paths"
$Paths
"args"
$args

Попытка № 1

Я создал ярлык со следующей командной строкой и перетащил некоторые файлы на ней. Файлы сталкиваются отдельных параметров, которые сначала соответствуют параметрам сценария позиционально, при этом остаток помещается в массив $args.

Ярлык для попытки № 1

powershell.exe -noprofile -noexit -file c:\Test.ps1

Сценарий обертки

Я нашел, что могу сделать это со сценарием обертки...

#TestWrapper.ps1
& .\Test.ps1 -Paths $args

Ярлык для сценария обертки

powershell.exe -noprofile -noexit -file c:\TestWrapper.ps1

Сценарий обертки пакетного файла

И это работает через сценарий обертки пакетного файла...

REM TestWrapper.bat
SET args='%1'
:More
SHIFT
IF '%1' == '' GOTO Done
SET args=%args%,'%1'
GOTO More
:Done
Powershell.exe -noprofile -noexit -command "& {c:\test.ps1 %args%}"

Предпринятые ответы

Keith Hill сделал превосходное предложение для использования следующей командной строки ярлыка, однако это не передало аргументы правильно. Пути с пробелами были разделены независимо, когда они прибыли в Тестовый ps1 сценарий.

powershell.exe -noprofile -noexit -command "& {c:\test1.ps1 $args}"

Кто-либо нашел способ сделать это без дополнительного сценария?

15
задан Community 23 May 2017 в 12:26
поделиться