Trying to use batch file in one location and call powershell script elevated
Você pode realizar o que está tentando fazer com a sintaxe abaixo do que testei e confirmei do meu lado. Eu incorporei algumas técnicas em sua lógica com como eu fiz esse tipo de coisa com outras soluções de processo de arquivo do PowerShell e do Batch, como explicado no passado.
Eu adicionei o caminho WIN2k8\Non-Supressed
após a variável %~j
para que o loop FOR /F
use o caminho completo para SET
a variável ( FPath
) para usar posteriormente para usar essa variável como o caminho completo de o script do PowerShell que está sendo executado. Não há necessidade de usar o comando PUSHD
por esse método.
Eu também uso um CD /D
explícito para o diretório do Windows do aplicativo PowerShell, chamo o PowerShell de lá e, em seguida, transmito os argumentos, comandos, switches, etc. - com o caminho completo do script do PowerShell (por exemplo, -ExecutionPolicy Bypass -Command "& '%FPath%\PatchTest.ps1'"
).
Exemplo de script em lote
@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