У меня есть командный файл, который запускает скрипт powershell, и мне нужно передать два параметра в сценарий. В моей партии это выглядит так:

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

Теперь все параметры моего скрипта powershell перепутаны, и я получаю:

  • мой путь1 "мой
  • path2\somefile.txt

Я попытался инкапсулировать свои параметры с символами ' и ` и я почти получил то, что хочу, но второй символ кавычки остается в скрипте powershell. Что я получаю, это:

powershell -executionpolicy remotesigned -File "my script.ps1" "'my path1\'" "'my path2\somefile.txt'"
  • 'мой путь1\'
  • 'мой путь2\somefile.txt'

И что я хочу это

  • мой путь1\
  • мой путь2\somefile.txt

Я знаю, что могу удалить лишние кавычки в скрипте powershell, но есть ли лучший способ сделать это? Другими словами, как я могу передать эти параметры в PowerShell таким образом, чтобы они оставались в здравом уме?

Тестовый скрипт powershell:

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

1 ответ1

0

Мне удалось это выяснить. Проблема заключалась в конце косой черты в первом параметре. Эта косая черта ускользнула от моей цитаты, и из-за этого она не работала как цитата (хотя powershell все равно обрезал строку в более позднем месте по любой причине).

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

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

Эта проблема, вероятно, не относится к пакетным файлам и, скорее всего, также влияет на запуск сценариев PowerShell из командной строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .