Параметри з пробілами проаналізовані неправильно для сценарію PowerShell, запущеного з командного файлу


0

У мене є пакетний файл, який запускає сценарій powershell, і мені потрібно передати два параметри сценарію. У моєму пакеті це виглядає так:

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\" "my path2\somefile.txt"

Як це зараз, параметри для мого сценарію PowerShell повністю переплутані, і я отримую:

  • мій шлях1 "мій."
  • path2 \ t

Я спробував інкапсулювати свої параметри ' і ` символи, і я майже отримав те, що я хочу, але другий символ цитата залишається в сценарії PowerShell. Я отримую таке:

powershell -executionpolicy remotesigned -File "my script.ps1" "'my path1\'" "'my path2\somefile.txt'"
  • 'мій шлях1' \ t
  • "мій шлях2"

І те, що я хочу, це

  • мій шлях1
  • my path2

Я знаю, що можу позбавити надлишкові цитати у сценарії powerhell, але чи є кращий спосіб це зробити? Іншими словами, Як я можу передати ці параметри в PowerShell таким чином, що утримує їх в нормальному стані?

Тест сценарію PowerShell:

echo $args[0]
echo $args[1]

Я тільки що помітив, що перший параметр закінчується символом, який, здається, працює як символ втечі. Тепер мені потрібно з'ясувати, як обійти її.
jahu

Відповіді:


0

Мені вдалося розібратися. Проблема полягала в тому, що в першому параметрі відхилялася кінцева слеш. Ця коса рятувалася від моєї цитати, і через це вона не працювала як цитата (все ж powerhell все ще розрізала рядок на більш пізньому просторі з якоїсь причини).

Мій пакетний файл був автоматично згенерований, але мені вдалося виправити його, додавши ще одну косу риску в кінці першого параметра (яка, як очікувалося, закінчиться косою рискою).

powershell -executionpolicy remotesigned -File "my script.ps1" "my path1\\" "my path2\somefile.txt"

Ця проблема, ймовірно, не є специфічною для пакетних файлів і, ймовірно, також впливає на запущені сценарії PowerShell з командного рядка.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.