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

Roc*_*mat 11 powershell vmware-workstation windows-server-2012

我在 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:\'
Run Code Online (Sandbox Code Playgroud)

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

jsc*_*ott 10

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

net use Z: "\\vmware-host\Shared Folders"
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*son 7

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

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

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

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

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

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