我在 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 Documents
并WindowsPowerShell
在其中创建一个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...
)在更多情况下有效。