繁体   English   中英

运行一个批处理文件,该批处理文件运行一个PowerShell文件,该文件运行一个批处理文件…以管理员身份运行

[英]Running a batch file that runs a PowerShell file that runs a batch file… as Administrator

听起来很荒谬,但是我有一个启动PowerShell文件的批处理文件(右键单击一个批处理文件和“以管理员身份运行”会更容易),这取决于PowerShell文件中的某些参数,可以运行另一个批处理文件做一些事情。

.bat-> .ps1-> .bat

这是必要的,因为除我以外的其他人会写和管理该其他批处理文件。 我无法将其所做的工作整合到自己的脚本中。

照原样,运行批处理文件确实会以管理员身份运行PowerShell脚本。 它还会继续以管理员身份继续运行并运行嵌套的批处理文件吗? 它有多深? 您曾经“失去”管理员吗?

是的,它会一直持续下去,并且在大多数情况下,这取决于您的进程在做什么,但是答案通常是,不,它不会失去管理员权限。 这里的主要区别是您的脚本是否保持本地状态。

如果是本地,则为是,将从初始提升的流程中产生的流程保留为管理员上下文。

如果您的笔迹遍及整个网络,则取决于情况。 提升了的帐户也是远程计算机上的管理员吗? 是的,它将继续以管理员身份运行。 如果本地用户在远程计算机上没有管理权限,则有可能与远程主机进行交互,但不执行管理任务(取决于本地管理员在远程计算机上是否具有“用户”权限)。

如果您具有本地主机(A)和远程主机(B和C),并且主机A中的脚本(具有管理员权限)尝试在主机B上执行一系列命令。如果这些命令中的任何一个从主机B延伸到任何主机其他远程主机(例如主机C),则将由于其他原因而失败。 发生此问题的原因是Windows如何执行NTLM / Kerberos身份验证并将这些凭据存储为单点登录。

假设在主机A上成功进行了初始本地身份验证,则会在内存中创建一个安全令牌,并在其中进行存储和维护,以便任何需要身份验证的对象都可以重用该令牌,而无需重新提示用户输入凭据。 对该过程进行过多的讨论超出了此问题的范围,但是只要了解一下,尽管主机A拥有该令牌并可以将其提供给远程资源进行身份验证,但是远程主机却无法获得它的副本。 意思是,主机A可以让主机B信任它(假定已授予权限),但是主机B没有机制可以向任何其他主机(例如主机C)提供相同的身份验证令牌-为了进行更详细的说明,这称为“双跳”问题。 https://blogs.technet.microsoft.com/askds/2008/06/13/understanding-kerberos-double-hop/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM