Acesse a unidade de rede já mapeada no PowerShell

8

Estou executando uma instalação do Windows Server 2012 dentro do VMWare Workstation. Eu tenho pastas compartilhadas habilitadas, então a unidade Z: está mapeada para \vmware-host . Eu posso acessar corretamente esta unidade no Explorer (eu posso acessar Z: dentro do cmd "normal") e posso abrir arquivos corretamente.

Eu abri o PowerShell e tentei cd Z: e recebi o seguinte erro:

cd : Cannot find path 'Z:\' because it does not exist.

Por que o PowerShell não consegue encontrar a unidade de rede mapeada ?

Eu pesquisei um pouco no Google e encontrei o comando New-PSDrive . Eu corri o seguinte:

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

mas ainda recebo o mesmo erro acima. O que preciso fazer para acessar as pastas compartilhadas VMWare dentro do PowerShell.

    
por Rocket Hazmat 05.03.2015 / 21:31

2 respostas

8

Você precisa disponibilizar o mapeamento de unidade para o usuário que está executando Powershell as. Você pode fazer o seguinte para fornecer a esse usuário o mesmo mapeamento de unidade:

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

Veja a seguinte pergunta SO: Não é possível acessar a unidade de rede PowerShell sendo executado como administrador

    
por 05.03.2015 / 21:46
4

Você está iniciando este console do PowerShell como administrador ou como usuário atual?

Se você estiver executando a partir de um prompt de comando não elevado, ele deverá ver todas as unidades de rede mapeadas localmente. Estou na mesma situação que você agora e tenho x: mapeado para \vmware-host\[folder] e um Get-PSDrive -PSProvider FileSystem mostra todas as minhas unidades mapeadas localmente.

No entanto , se eu iniciar este console como um Administrador, ele não verá nenhuma das minhas unidades mapeadas local, como para um prompt de comando elevado, um contexto de segurança diferente (segundo) é usado para carregar o aplicativo, que não compartilha conexões de rede.

A boa notícia é que você basicamente só precisa mapear a unidade no console do administrador apenas uma vez e ela permanecerá nesse contexto de segurança (até uma reinicialização, eu acho).

Se você quiser automatizar isso, deverá ler os scripts de carregamento automático ao iniciar uma sessão do PowerShell. Basicamente, se você criar uma pasta no seu My Documents chamado WindowsPowerShell e dentro dela criar um arquivo Microsoft.PowerShell_profile.ps1 , ele será acionado toda vez que você iniciar um novo console do PowerShell. Lá você pode adicionar um comando net use ou adicionar funções personalizadas que você tenha escrito e que deseja usar.

Por exemplo, eu tenho um que transforma meu cursor em vermelho para consoles administrativos e tem uma função que eu posso chamar facilmente para assinar meus scripts PS1.

    
por 05.03.2015 / 21:47