我有一个可以在远程 Windows 机器上执行 powershell 脚本的应用程序。我正在尝试使用 powershell 脚本映射网络驱动器。当在端点执行相同的脚本时,脚本工作正常,能够映射网络驱动器。但是当从我的应用程序执行相同的脚本时,映射网络驱动器已完成,但网络驱动器已断开连接。
现在,我的观察是:我发现我的应用程序正在使用NT Authority\System
帐户执行脚本。可能是因为这个原因,映射的网络驱动器对于特定用户来说是一个断开连接的驱动器。我说得对吗?!?
现在,问题是:我该怎么做才能映射一个可供所有用户使用的网络驱动器?或者我可以以特定用户的身份运行我的 powershell 脚本,以便该驱动器仅映射到该用户?
无论如何,我已经尝试使用和以不同于我的应用程序的用户身份运行我的 powershell 脚本Start-Process
,Invoke-Command
它会引发一个错误,说运行winrm quickconfig
也不起作用。
有什么帮助吗?非常感谢!!
答案1
从NT Authority\System
驱动器映射时将显示为断开连接,但它应该可以工作:映射网络驱动器以供服务使用
注意:新创建的映射驱动器现在将显示给此系统的所有用户,但他们将看到它显示为“断开连接的网络驱动器 (Z:)”。不要让名称欺骗您。它可能声称已断开连接,但它对每个人都有效。
此外,使用映射驱动器NT Authority\System
是使网络驱动器可供所有用户使用的唯一方法(尽管不受官方支持)。
如果你想为特定用户映射驱动器,你必须以其他用户身份运行 PowerShell。但这也意味着您必须获取该用户的凭证。
可以使用令牌操作来缓解此问题,但这很棘手。请参阅调用-TokenManipulation函数及其ImpersonateUser
参数。