Windows 以管理员身份运行批处理(自动提升),然后取消提升
我有一个分两部分运行的脚本。第一部分需要管理员访问权限(更新主机文件并进行一些复制/覆盖)。在该部分完成后,我需要使用主机名别名映射驱动器,并更新脚本的第一部分 我已经知道了如何通过使用这个来获得提升的特权。但是映射驱动器(在管理中)会将驱动器映射到管理会话中。我需要“反提升”到用户模式以运行第二个脚本 这是一个脚本,我每天至少运行一次,可能每天运行多次。如果可能的话,我正在尝试创建一个仅为1.bat文件的解决方案。出于某些原因,脚本是用perl编写的 我尝试过的事情:Windows 以管理员身份运行批处理(自动提升),然后取消提升,windows,perl,batch-file,command-prompt,Windows,Perl,Batch File,Command Prompt,我有一个分两部分运行的脚本。第一部分需要管理员访问权限(更新主机文件并进行一些复制/覆盖)。在该部分完成后,我需要使用主机名别名映射驱动器,并更新脚本的第一部分 我已经知道了如何通过使用这个来获得提升的特权。但是映射驱动器(在管理中)会将驱动器映射到管理会话中。我需要“反提升”到用户模式以运行第二个脚本 这是一个脚本,我每天至少运行一次,可能每天运行多次。如果可能的话,我正在尝试创建一个仅为1.bat文件的解决方案。出于某些原因,脚本是用perl编写的 我尝试过的事情: 使用runas/user
TLDR:如何在批处理文件中从管理模式反提升到用户模式?您最好使用最好的第三方远程/本地执行工具:Windows Sysinternals PSEXEC。您可以使用PSEXEC提供凭据并完成所需的任务!您可以将PSEXEC命令放入批处理文件或vbs中,并让它们顺利运行。您还可以使用PSEXEC提升权限调用一个命令,而不使用任何提升权限调用下一个命令,同时在单个唯一批处理文件中混合凭据
首先执行非提升部分,然后提升并继续。如果使用2个批处理文件,请使用
Main.cmd
调用提升批处理ElevatedBatch.cmd
(继续执行不相关的操作):
参数
/WAIT
确保脚本将一直等到ElevatedBatch.cmd
结束。对于ElevatedBatch.cmd
您可以使用类似的模板来提升它。很酷,这听起来很有希望。谢谢。我不确定在OP的场景中这是否可行。OP说他需要首先更新HOSTS文件,然后使用新的别名来完成第二部分。
@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