在 PowerShell 中访问已映射的网络驱动器

在 PowerShell 中访问已映射的网络驱动器

我在 VMWare Workstation 中运行 Windows Server 2012 安装。我已启用共享文件夹,因此驱动器Z:已映射到\\vmware-host。我可以在资源管理器中正确访问此驱动器(我可以Z:在“正常”`cmd 中访问),并且可以正确打开文件。

我打开 PowerShell 并尝试执行此操作cd Z:,但收到以下错误:

cd:找不到路径“Z:\”,因为它不存在。

为什么 PowerShell 找不到已经映射网络驱动器?

我谷歌了一下,找到了New-PSDrive命令。我运行了以下命令:

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'

但我仍然收到与上述相同的错误。我需要做什么才能在 PowerShell 中访问 VMWare 共享文件夹。

答案1

您需要将驱动器映射提供给您正在运行的用户Powershell。您可以执行以下操作来为该用户提供相同的驱动器映射:

net use Z: "\\vmware-host\Shared Folders"

请参阅以下问题:无法在以管理员身份运行的 PowerShell 中访问网络驱动器

答案2

您是以管理员身份还是以当前用户身份启动此 PowerShell 控制台?

如果您从非提升的命令提示符运行它,那么它应该会看到您本地映射的所有网络驱动器。我现在的情况与您相同,并且已x:映射到\\vmware-host\[folder],并且Get-PSDrive -PSProvider FileSystem显示了我本地映射的所有驱动器。

然而,如果我以管理员身份启动此控制台,它将看不到我的任何本地映射驱动器,因为对于提升的命令提示符,使用不同的(第二个)安全上下文来加载不共享网络连接的应用程序。

好消息是,您基本上只需要在管理员控制台中映射驱动器一次,它就会保留在该安全环境中(我认为直到重新启动)。

如果您想自动执行此操作,则应阅读有关启动 powershell 会话时自动加载脚本的信息。基本上,如果您在调用中创建一个文件夹My DocumentsWindowsPowerShell在其中创建一个Microsoft.PowerShell_profile.ps1文件,则每次启动新的 powershell 控制台时都会触发它。您可以在那里添加命令net use,或添加您想要使用的自定义函数。

例如,我有一个可以将我的光标变为红色以用于管理控制台,并且有一个我可以轻松调用来签署我的 PS1 脚本的函数。

答案3

要使该New-PSDrive命令正常工作,您需要使用 -Root 的 UNC 路径而不是“Z:”,因为提升的 PowerShell 还不知道 Z::

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root '\\server\sharedFolder'

我的理解是,jscott 的答案(net use...)在更多情况下有效。

相关内容