У меня есть пакетный файл test.bat
. Я вызываю следующие инструкции в файле test.bat
:
start /min powershell.exe %sysdrive%\testScripts\testscript1.ps1
Когда я запускаю это через командную строку, мой тестовый сценарий успешно выполняется. Я хочу запустить его от имени администратора (как если бы я создал ярлык на рабочем столе и запустил от имени администратора. При этом не должно запрашиваться ни имя пользователя, ни пароль).
Я пробовал добавить параметры /elevate
и /NOUAC
в вышеупомянутый test.bat
, но безуспешно. Как мне решить эту проблему?
Я знаю, как сделать это вручную, но я хочу, чтобы это выполнялось из командной строки.
(By Marnix Klooster): ...без использования каких-либо дополнительных инструментов, например, предложенных в ответе на вопрос Суперпользователя Как запустить программу из командной строки с повышенными правами).
Попробуйте это:
runas.exe /savecred /user:administrator "%sysdrive%\testScripts\testscript1.ps1"
Он сохраняет пароль в первый раз и больше не спрашивает. Возможно, когда вы измените пароль администратора, вам снова придет запрос.
См. эту статью TechNet: документация по команде Runas
Из командной строки:
C:\> runas /user:<localmachinename>\administrator cmd
Или, если вы подключены к домену:
C:\> runas /user:<DomainName>\<AdministratorAccountName> cmd
Похоже, что psexec -h
- это способ сделать это:
-h If the target system is Windows Vista or higher, has the process
run with the account's elevated token, if available.
Который... кажется, не указан в онлайн-документации в Sysinternals - PsExec.
Но это работает на моей машине.