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

我正在VMWare Workstation内部运行Windows Server 2012安装。 我已启用共享文件夹,因此将驱动器Z:映射到\\vmware-host 。 我可以在资源pipe理器中正确访问这个驱动器(我可以访问Z:在“普通”cmd里面),我可以正常打开文件。

我打开PowerShell,并试图对cd Z:我得到了以下错误:

cd:找不到path'Z:\',因为它不存在。

为什么PowerShell找不到已经映射的networking驱动器?

我GOOGLE了一下,发现了New-PSDrive命令。 我跑了以下几点:

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

但是我仍然得到与上面相同的错误。 访问PowerShell内的VMWare共享文件夹需要做些什么?

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

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

请参阅以下SO问题: 无法访问以pipe理员身份运行的PowerShell中的networking驱动器

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

如果从非提升的命令提示符运行它,则应该看到所有本地映射的networking驱动器。 我和你现在处于相同的状态,并把x:映射到\\vmware-host\[folder] ,一个Get-PSDrive -PSProvider FileSystem显示我所有本地映射的驱动器。

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

好消息是,你基本上只需要在pipe理员控制台中映射驱动器一次,它将保持在该安全上下文中(直到重新启动,我想)。

如果您想自动执行此操作,则应该在启动PowerShell会话时阅读自动加载脚本。 基本上,如果您在My Documents中创build一个名为WindowsPowerShell的文件夹,并在其中创buildMicrosoft.PowerShell_profile.ps1文件,则每次启动新的PowerShell控制台时都会触发该文件。 在那里你可以添加一个net use命令,或者添加你想要使用的自定义函数。

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