![如何以当前用户身份在提升的上下文中运行 Powershell 脚本?](https://linux22.com/image/1596079/%E5%A6%82%E4%BD%95%E4%BB%A5%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E8%BA%AB%E4%BB%BD%E5%9C%A8%E6%8F%90%E5%8D%87%E7%9A%84%E4%B8%8A%E4%B8%8B%E6%96%87%E4%B8%AD%E8%BF%90%E8%A1%8C%20Powershell%20%E8%84%9A%E6%9C%AC%EF%BC%9F.png)
我有一个 Powershell 脚本,需要管理员权限才能设置 Azure 文件共享等。最后一个脚本命令用于New-PSDrive
将文件共享映射到驱动器号。我的期望是可以从 Windows 资源管理器访问新的驱动器号。我知道New-PSDrive
从提升的上下文中使用只会映射该上下文中的驱动器,因此我的用户帐户无法使用它。
如何以当前用户身份从提升的脚本执行 Powershell 脚本/进程?
答案1
如果不提供用户凭证,您就无法更改用户上下文。您可以轻松获取已登录的用户,但除非他们输入密码,否则您永远无法获取他们的密码。
Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential
其次,如果您正在远程运行,用户永远不会看到它,因为它只能在您所在的原始上下文中运行。
PowerShell 本身不允许您执行此操作,因为它是 Windows 安全边界。如果您确实需要这样做,请考虑使用 MS SysInternals PSExec。
或者寻找在计划任务中做的事情。
答案2
我完全误解了这一点,因为我默认以管理员身份运行所有程序。我将脚本拆分为两个单独的脚本,一个用于需要管理员权限的代码,另一个用于需要用户权限的代码。我调用用户权限脚本,该脚本检查是否在管理员上下文中并出错。然后,我可以在用户脚本自己的提升提示符中执行管理员脚本,等待,然后我就会回到用户上下文。