PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -Command "Set-Location \"%~dp0\"; \".\Server.ps1\"' -Verb RunAs}"
-Verb RunAs
заставляет новый процесс Powershell сменить каталог на системный каталог. Вы можете использовать set-location
, чтобы изменить его в каталог скриптов пакетного файла, используя %~dp0
.
Аргумент -WorkingDirectory
, кажется, игнорируется, когда используется -Verb RunAs
, поэтому кажется устаревшим для этой задачи.
Вы можете просмотреть этот пример, чтобы увидеть, что текущий или изменяющийся каталог до того, как процесс Powershell не повлияет на новый процесс Powershell с повышенными правами:
cd /d "%~dp0"
PowerShell -NoProfile -ExecutionPolicy Unrestricted -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Unrestricted -Command \"Get-Location; Start-Sleep 10\"' -Verb RunAs}"
, который выводит:
Path
----
C:\Windows\system32
, поэтому вам может потребоваться изменить каталог в процессе Powershell с повышенными правами.