Попытка использовать командный файл в одном месте и вызвать повышенный сценарий powershell
Вы можете выполнить то, что вы пытаетесь сделать с помощью приведенного ниже синтаксиса из того, что я протестировал и подтвердил со своей стороны. Я включил некоторые приемы в вашу логику с тем, как я делал подобные вещи с другими решениями для обработки файлов PowerShell и Batch, как вы объясняли в прошлом.
Я приложил к WIN2k8\Non-Supressed
пути после% ~ переменной %~j
поэтому цикл FOR /F
будет использовать полный путь для SET
переменного FPath
для дальнейшего использования , чтобы использовать этот переменный как полный путь сценария PowerShell , который выполняется Нет необходимости использовать команду PUSHD
для этого метода.
Я также использую явный CD /D
для каталога Windows приложения PowerShell, оттуда вызываю PowerShell, а затем передаю ему аргументы, команды, переключатели и т.д. С полным путем сценария PowerShell (т.е. -ExecutionPolicy Bypass -Command "& '%FPath%\PatchTest.ps1'"
).
Пример пакетного скрипта
@ECHO ON
SETLOCAL
FOR /F "SKIP=1 TOKENS=1,2" %%i IN ('"wmic logicaldisk get caption, drivetype"') DO (IF [%%~j]==[5] SET FPath="%%~i\WIN2k8\Non-Supressed")
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%FPath%\PatchTest.ps1'"
ECHO Press Space Bar to continue
PAUSE
ENDLOCAL
Дополнительные ресурсы