我正在 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 共享文件夹。
您需要使您正在运行的用户可以使用驱动器映射
Powershell
。您可以执行以下操作来为该用户提供相同的驱动器映射:请参阅以下 SO 问题:Cannot access network drive in PowerShell running as administrator
您是以管理员身份还是当前用户身份启动此 PowerShell 控制台?
如果您从非提升的命令提示符运行它,那么它应该会看到所有本地映射的网络驱动器。我现在和你的情况一样,并且已经
x:
映射到\\vmware-host\[folder]
,并且Get-PSDrive -PSProvider FileSystem
显示了我所有本地映射的驱动器。但是,如果我以管理员身份启动此控制台,它看不到我的任何本地映射驱动器,因为提升的命令提示符使用不同的(第二个)安全上下文来加载不共享网络连接的应用程序。
好消息是您基本上只需要在管理员控制台中映射驱动器一次,它将保持在该安全上下文中(我认为直到重新启动)。
如果要自动执行此操作,则应在启动 powershell 会话时阅读自动加载脚本。基本上,如果您在
My Documents
被调用的文件夹中创建一个文件夹,WindowsPowerShell
并在其中创建一个Microsoft.PowerShell_profile.ps1
文件,则每次启动新的 powershell 控制台时都会触发。您可以在此处添加net use
命令,或添加您编写的要使用的自定义函数。例如,我有一个可以将管理控制台的光标变为红色,并且有一个函数,我可以轻松调用它来签署我的 PS1 脚本。
要使该
New-PSDrive
命令正常工作,您需要为 -Root 使用 UNC 路径而不是“Z:”,因为提升的 PowerShell 还不知道 Z::我的理解是,jscott 的答案 (
net use...
) 在更多情况下有效。