如何使PowerShell以标准用户身份运行程序?
好吧,我一直在网上搜索,但我在这上面什么也找不到 基本上,我要做的是从提升的PowerShell脚本运行程序,但我希望该程序以标准用户的身份运行 我需要这样做,因为我需要运行的程序需要访问域管理员帐户无权访问的映射网络驱动器。因此,我基本上需要一行代码,使脚本脱离提升模式,或者对Start Program命令进行一些扩展,使其以登录用户的身份运行,而不是以运行脚本的管理员帐户的身份运行。您可以使用 -l:以受限用户身份运行进程(剥离Administrators组,只允许分配给Users组的权限)。在Windows Vista上 该进程以低完整性运行 你可以用 -l:以受限用户身份运行进程(剥离Administrators组,只允许分配给Users组的权限)。在Windows Vista上 该进程以低完整性运行如何使PowerShell以标准用户身份运行程序?,powershell,Powershell,好吧,我一直在网上搜索,但我在这上面什么也找不到 基本上,我要做的是从提升的PowerShell脚本运行程序,但我希望该程序以标准用户的身份运行 我需要这样做,因为我需要运行的程序需要访问域管理员帐户无权访问的映射网络驱动器。因此,我基本上需要一行代码,使脚本脱离提升模式,或者对Start Program命令进行一些扩展,使其以登录用户的身份运行,而不是以运行脚本的管理员帐户的身份运行。您可以使用 -l:以受限用户身份运行进程(剥离Administrators组,只允许分配给Users组的权限)
我想有更多的方法可以做到这一点(可能有些甚至更好),但这也应该行得通 如果需要在提升的环境中的当前登录用户下运行可执行文件或脚本,可以使用with
USERNAME
环境变量作为user
参数传递:
runas/用户:%USERNAME%program.exe
USERNAME
环境变量应该包含当前登录的用户,即使在提升的环境中也是如此。我想有更多的方法可以做到这一点(可能有更好的方法),但这也应该有效
如果需要在提升的环境中的当前登录用户下运行可执行文件或脚本,可以使用withUSERNAME
环境变量作为user
参数传递:
runas/用户:%USERNAME%program.exe
USERNAME
环境变量应包含当前登录的用户,即使在提升的环境中也是如此。执行此操作的常用方法是指定网络UNC路径,而不是网络驱动器。如果需要,您甚至可以在提升过程中重新映射驱动器。你应该这样做。如果您有一个帐户正在运行一个需要访问网络位置的进程,正确的答案是授予该帐户执行其任务所需的访问权限
然而
是否描述了您实际遇到的问题?很不清楚你想做什么。你已经从你的问题中排除了所有的上下文
如果您试图运行一个脚本,该脚本需要运行提升版,并且需要访问用户的网络驱动器,并且无论出于何种原因,您都无法使用UNC路径,那么上述三个链接可能就是您想要的
如果你真的,真的需要模拟一个登录的用户——我真的很难想象我需要通过脚本来实现这一点——那么请继续阅读 不需要了解用户凭据的备选方案有:
对于其他内容,我认为您需要当前用户的凭据。您要做的是凭证劫持,而操作系统安全性是专门设计的,不允许这样做。通常使用的方法是指定网络UNC路径,而不是网络驱动器。如果需要,您甚至可以在提升过程中重新映射驱动器。你应该这样做。如果您有一个帐户正在运行一个需要访问网络位置的进程,正确的答案是授予该帐户执行其任务所需的访问权限 然而 是否描述了您实际遇到的问题?很不清楚你想做什么。你已经从你的问题中排除了所有的上下文 如果您试图运行一个脚本,该脚本需要运行提升版,并且需要访问用户的网络驱动器,并且无论出于何种原因,您都无法使用UNC路径,那么上述三个链接可能就是您想要的
如果你真的,真的需要模拟一个登录的用户——我真的很难想象我需要通过脚本来实现这一点——那么请继续阅读 不需要了解用户凭据的备选方案有:
psexec -l powershell.exe -executionpolicy unrestricted -noexit -file c:\temp\checkelevated.ps1