我有一个 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
我完全误解了这一点,因为我默认以管理员身份运行所有程序。我将脚本拆分为两个单独的脚本,一个用于需要管理员权限的代码,另一个用于需要用户权限的代码。我调用用户权限脚本,该脚本检查是否在管理员上下文中并出错。然后,我可以在用户脚本自己的提升提示符中执行管理员脚本,等待,然后我就会回到用户上下文。