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


8

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

我打开PowerShell并尝试这样做cd Z:,但出现以下错误:

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

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

我用Google搜索了一下,找到了New-PSDrive命令。我执行以下操作:

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

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


Get-PSDrive -PSProvider FileSystem打开新的Powershell控制台时,报告什么?
jscott 2015年

@jscott:在一个新的控制台,我看到的ACD。在已经打开的控制台中,我还看到了Z。为什么新的控制台不显示Z
火箭Hazmat'3

3
您在运行Powershell高架吗?如果是这样,请尝试在没有“以管理员身份运行”的情况下运行它。如果运行提升,则需要重新映射驱动器。 stackoverflow.com/questions/4742992/...
jscott

@jscott:它以管理员身份运行。我也跑了Set-ExecutionPolicy -ExecutionPolicy Unrestricted。我正在使用PowerShell尝试运行要调用的脚本New-ADUser
火箭Hazmat

@jscott:我只是以用户(不是管理员)的身份运行PowerShell,它可以正常访问Z:
火箭Hazmat'3

Answers:



5

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

如果从非高位命令提示符运行它,则它应该看到所有本地映射的网络驱动器。我目前处于和您相同的情况,并且已x:映射到\\vmware-host\[folder],并且Get-PSDrive -PSProvider FileSystem向我显示了所有本地映射的驱动器。

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

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

如果要自动执行此操作,则在启动Powershell会话时应阅读自动加载脚本。基本上,如果您在My Documents被调用的文件夹中创建一个文件夹,WindowsPowerShell并在其中创建Microsoft.PowerShell_profile.ps1文件,则在您每次启动新的Powershell控制台时都会触发该文件夹。您可以在此处添加net use命令或添加要使用的自定义功能。

例如,我有一个将管理控制台的光标变成红色的功能,并且可以轻松调用该功能来签名我的PS1脚本。


是的,这就是这里发生的事情。该驱动器已映射为我的用户,并且PowerShell以管理员身份运行。我习惯Linux外壳,而不是PowerShell。
火箭Hazmat'3

这是有关管理控制台提示的非常好的技巧。您在profile.ps1中使用什么来检测会话是否提升?
stib
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.