如何让New-PSDrive创建的映射盘在所有Shell及资源管理器可见
我尝试了多种变体方案执行PowerShell脚本挂载Azure上的网络共享,目标是让挂载后的盘符可同时被其他Shell环境和文件资源管理器识别。按照微软官方命令文档的说明,给New-PSDrive加上-Persistent和-Scope Global参数就能让创建的驱动器“立即对其他Shell可见”,但实际测试时这个配置并没有生效。
使用的测试脚本如下:
$mDL = 'Z' # 目标挂载盘符 $dDesc = 'ML-DATA' # PSDrive描述信息 $NLRoot = "\\somepath.windows.net\xxx" # 网络共享路径 $UserName = "localhost\someuser" # 访问凭证对应的用户名 $cred = Get-Credential -Credential $UserName New-PSDrive -Name $mDL -PSProvider "FileSystem" -Root $NLRoot -Credential $cred -Description $dDesc -Persist -Scope Global
当前测试环境为Win10系统,挂载的驱动器本身基础读写功能正常,唯一的问题是无法被系统内其他组件识别。
核心问题:如何配置才能让该映射驱动器可被其他PowerShell实例和文件资源管理器正常识别?
2022-07-06 内容更新
经核对,我之前记错了表述的引用来源:“所有PowerShell会话可立即获取新驱动器映射”的说法实际来自ss64站点关于New-SmbMapping命令的文档,该文档明确说明:
通过New-SmbMapping创建驱动器映射后,新驱动器对所有当前正在运行的进程(包括Windows资源管理器)默认不可见,需要重启对应进程或者重启计算机后才能正常识别。唯一的例外是PowerShell控制台,计算机上所有PowerShell会话可以立即获取到新的驱动器映射。
微软官方文档的表述对非专业用户不够友好,很容易造成误解。在New-PSDrive的官方文档中,和持久化映射相关的说明共有两处:
- 文档
示例4中的说明:
创建的映射驱动器可在本地计算机的PowerShell会话、文件资源管理器,以及net use等传统工具中查看。 - 参数列表中
-Persist条目的说明:
映射的网络驱动器会保存在本地Windows系统中,属于持久化映射而非当前会话专属,可在文件资源管理器和其他工具中查看、管理。
最终需求
我需要实现的效果是:该网络共享映射不区分登录用户、不区分会话类型,挂载的Z:盘全系统可见,所有用户都可以在文件资源管理器、任意PowerShell/cmd窗口中直接访问该盘符,请问需要如何配置?
参考资料
- Windows映射驱动器底层运行机制说明
- 组策略映射网络驱动器配置指南
内容的提问来源于stack exchange,提问作者not2qubit

