好吧,所以,我已经在网上搜索了很久了,我在这上面找不到任何东西。
基本上,我想要做的是从一个提升的PowerShell脚本中运行一个程序,但我希望该程序以标准用户的身份运行。
我需要这样做,因为我需要运行的程序需要访问域管理员帐户无法访问的映射网络驱动器。因此,我基本上需要一行代码将脚本从提升模式中删除,或者对Start-Program命令进行一些扩展,使其以登录用户的身份运行,而不是脚本运行的管理员帐户。
发布于 2015-07-16 09:24:56
你可以用psexec
psexec -l powershell.exe -executionpolicy unrestricted -noexit -file c:\temp\checkelevated.ps1-l :以有限用户的身份运行流程(剥离Administrators组,只允许分配给user组的权限)。在Windows上,进程运行时的完整性很低。
发布于 2015-07-16 09:37:18
我想有更多的方法(可能更好),但这也应该是可行的。
如果需要从提升的环境中运行当前登录用户的可执行文件或脚本,可以使用RunAs和USERNAME环境变量作为user参数传递:
runas /user:%USERNAME% program.exe
即使在提升的环境中,USERNAME环境变量也应该包含当前登录的用户。
发布于 2015-07-16 12:02:17
要做到这一点,通常打算和接受的方法是指定网络UNC路径,而不是网络驱动器。如果你需要的话,你甚至可以重新映射提升过程中的驱动器。你应该这么做的。如果您的帐户运行一个需要访问网络位置的进程,则正确的答案是授予该帐户完成其工作所需的访问权限。
但是..。
这、这或这是否描述了您实际遇到的问题?很不清楚你想做什么。你已经从你的问题中剔除了所有的背景。
如果您试图运行一个需要运行提升的脚本,并且需要访问用户的网络驱动器,并且由于任何原因不能使用UNC路径,那么上述三个链接可能就是您想要的。
如果你真的真的需要模拟一个登录用户--我真的很难想出我需要通过脚本来做这件事的情况--然后继续读下去。
不需要了解用户凭据的替代方法是:
对于任何其他内容,我认为您将需要当前用户的凭据。您将做的是凭据劫持,操作系统安全是专门设计的,不允许这样做。
https://stackoverflow.com/questions/31449633
复制相似问题