Попытка использовать командный файл в одном месте и вызвать повышенный сценарий 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
Дополнительные ресурсы