我有一个脚本,运行在两个部分。 第一部分需要pipe理员访问(更新HOSTS文件,并做一些复制/覆盖)。 在完成该部分之后,我需要使用主机名别名映射驱动器,更新脚本的第一部分。
我已经想通过使用这个SO问题如何获得提升的特权。 但映射一个驱动器(在pipe理员)映射一个驱动器到pipe理员的会话。 我需要“解除”回用户模式来运行我的第二个脚本。
这是我每天至less运行一次的脚本,可能每天多次运行。 我正在尝试创build一个只有1个.bat文件的解决scheme,如果可能的话。 出于某些原因,这些脚本是用perl编写的。
我已经尝试过的事情:
TLDR: 如何在batch file中从pipe理员模式升级到用户模式?
您最好的选择是使用最好的第三方远程/本地执行工具:Windows Sysinternals PSEXEC。 您可以使用PSEXEC提供证书并完成您所需的任务! 您可以将PSEXEC命令放入您的批处理文件或vbs中,让它们顺利运行。 您也可以使用PSEXEC提升权限调用一个命令,而下一个命令不带任何提升,同时将凭证混合到一个唯一的批处理文件中。
http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx
如果您使用的是两个批处理文件,请使用Main.cmd (继续进行未升级的操作)调用具有标高的批量ElevatedBatch.cmd :
@ECHO OFF START /WAIT ElevatedBatch.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9 REM here you can do unelevated stuff: ECHO Running unelevated now
参数/WAIT确保脚本将等到ElevatedBatch.cmd结束。 对于ElevatedBatch.cmd您可以使用像这样的模板来提升它。
先做非升高部分,然后升高并继续。