Как запустить сценарий powershell из командного файла, когда путь к сценарию ps содержит пробелы, а путь получен из% ~ dp0% - PullRequest
0 голосов
/ 18 октября 2018

У меня есть командный файл Install.bat, который вызывает скрипт PowerShell GetVersion.ps1.Эти два сценария находятся в одной папке (C: \ Install_Media), и я вызываю сценарий powershell, получая каталог, в котором находится пакетный файл (с использованием% ~ dp0%).

Следующий код хорошо работает, еслив пути, где находятся эти файлы, нет места.Если в пути есть пробел, то шеллскрипт не выполняется (например, C: \ Install Media).Сценарий перестает говорить, что термин «C: \ Install» не распознается как имя командлета, функции, сценария.

@ECHO OFF
set SRC_DIR=%~dp0%
Powershell set-executionPolicy remotesigned
Powershell %SRC_DIR%\GetSLMClientVersion.ps1
Powershell set-executionPolicy restricted

Ошибка ScreenShot

1 Ответ

0 голосов
/ 18 октября 2018

Расширение параметра использует только один символ % в начале выражения.Кроме того, вам не нужно менять политику выполнения взад и вперед.powershell.exe имеет параметр для временного переопределения политики выполнения.А пробелы в пути лучше всего обрабатывать, заключая путь в кавычки, как указано в комментариях TheIncorrigible1 .

Измените свой код следующим образом:

@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0\GetSLMClientVersion.ps1"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...