I am running a Windows Server 2012 installation inside VMWare Workstation. I have shared folders enabled, so drive Z:
is mapped to \\vmware-host
. I can correctly access this drive in Explorer (I can access Z:
inside the "normal" `cmd) and I can properly open files.
I opened PowerShell and tried to to cd Z:
and I got the following error:
cd : Cannot find path 'Z:\' because it does not exist.
Why can't PowerShell find the already mapped network drive?
I Googled a bit, and found the New-PSDrive
command. I ran the following:
New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'
but I still get the same error as above. What do I need to do to access the VMWare shared folders inside PowerShell.
You need to make the drive mapping available to the user you're running
Powershell
as. You can do the following to give that user the same drive mapping:See the following SO question: Cannot access network drive in PowerShell running as administrator
Are you starting this PowerShell console as Administrator or as your current user?
If you are running it from a non-elevated command prompt, then it should see all your locally mapped network drives. I'm in the same situation as you right now and have
x:
mapped to\\vmware-host\[folder]
, and aGet-PSDrive -PSProvider FileSystem
shows me all my locally mapped drives.However, if I start this console as an Administrator, it does not see any of my local mapped drive, as for an elevated command prompt a different (second) security context is used to load the application, which does not share network connections.
The good news is that you basically just need to map the drive in the administrator console just once and it will remain in that security context (until a reboot, I think).
If you want to automate this, you should read up on auto-loading scripts when you start a powershell session. Basically if you create a folder in your
My Documents
calledWindowsPowerShell
and inside that create aMicrosoft.PowerShell_profile.ps1
file, it will trigger every time you start a new powershell console. There you can add anet use
command, or add custom functions that you've written that you want to use.For example, I have one that turns my cursor red for administrative consoles, and has a function that I can easily call to sign my PS1 scripts.
To get that
New-PSDrive
command to work, you need to use a UNC path for -Root instead of "Z:", since elevated PowerShell doesn't know about Z: yet:My understanding is that jscott's answer (
net use...
) works in more cases, though.