Невозможно запустить скрипт powershell в папке с квадратными скобками
У меня есть скрипт powershell в папке с квадратными скобками, например:
Когда я пытаюсь запустить свой скрипт из командной строки, используя:
C:\Temp\[test]>Powershell.exe .\MyScript.ps1
Я получаю следующий вывод:
Если я помещу тот же сценарий в папку без квадратных скобок и запустите:
C:\Temp\(test)>Powershell.exe .\MyScript.ps1
Это работает, и я получаю следующий вывод:
Сценарий является частью проекта автоматизации и должен находиться в папке с квадратными скобками. Любая помощь будет принята с благодарностью.
1 ответ
Проблема: передача локального пути к powershell.exe с квадратными скобками в именах папок означает, что powershell не может найти переданный ему файл сценария.
Вариант 1: используйте powershell -File .\MyScript.ps1
Вариант 2: используйте powershell %CD%\MyScript.ps1
Мне не ясно, почему powershell не может найти ваш путь, но аргумент командной строки -File, похоже, исправляет это. Как и при использовании свойства пакетного файла% CD% вместо '.'
Если я создаю файл "HelloWorld.ps1", содержащий одну строку:
Write-Output "Hello World"
в папке
c:\work\joel\scream
и запустите команду:
C:\work\joel\scream>powershell .\HelloWorld.ps1
тогда я получаю ожидаемый результат (Hello World).
Если я переименую папку в [scream], произойдет сбой.
cd ..
ren scream [scream]
Квадратные скобки - это оператор диапазона.
C:\work\joel\[scream]>powershell .\HelloWorld.ps1
теперь дает:
.\helloworld.ps1: термин ".\helloworld.ps1" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.
Однако работает:
C:\work\joel\[scream]>powershell -File .\HelloWorld.ps1
дает ожидаемый результат (Hello World).
powershell /?
<snip/>
-File
Runs the specified script in the local scope ("dot-sourced"), so that the
functions and variables that the script creates are available in the
current session. Enter the script file path and any parameters.
File must be the last parameter in the command, because all characters
typed after the File parameter name are interpreted
as the script file path followed by the script parameters.
Я не уверен, что PowerShell или командная строка / пакетный скрипт неправильно интерпретируют путь, но я могу сказать, что пока:
C:\work\joel\[scream]>powershell .\HelloWorld.ps1
не работает:
C:\work\joel\[scream]>powershell %CD%\helloworld.ps1
работает. так что, похоже, это связано с расширением "." в текущий путь.