Это неприятная проблема, с которой я сталкиваюсь. Не удивлюсь, если у него есть простое решение, просто оно ускользает от меня.
У меня есть 2 пакетных файла, которые я должен преобразовать в сценарии powershell.
file1.bat
---------
echo %1
echo %2
echo %3
file2.bat %*
file2.bat
--------
echo %1
echo %2
echo %3
В командной строке я вызываю это как
C:> file1.bat один два три
Вывод, который я вижу, как и ожидалось
один
два
три
один
два
три
(это пример грубого кода)
Когда я конвертируюсь в Powershell, у меня появляется
file1.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
. ./file2.ps1 $args
file2.ps1
---------
Write-Host "args[0] " $args[0]
Write-Host "args[1] " $args[1]
Write-Host "args[2] " $args[2]
When I invoke this on powershell command line, I get
$> & file1.ps1 one two three
args[0] one
args[1] two
args[2] three
args[0] one two three
args[1]
args[2]
Я понимаю, это потому, что $ args, используемый в file1.ps, является System.Object [] вместо 3 строк.
Мне нужен способ передать $ args, полученный file1.ps1, в file2.ps1, почти так же, как это достигается% * в .bat файлах.
Боюсь, существующий способ сломается, даже если это вызов кросс-функции, точно так же, как вызов кросс-файла в моем примере.
Перепробовал несколько комбинаций, но ничего не работает.
Пожалуйста, помогите. Буду очень признателен.