Acesse a unidade de rede já mapeada no PowerShell

8

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

Abri o PowerShell e tentei cd Z:e obtive o seguinte erro:

cd: Não foi possível encontrar o caminho 'Z: \' porque ele não existe.

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

Pesquisei um pouco no Google e encontrei o New-PSDrivecomando. Eu executei 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 do VMWare no PowerShell.

Foguete Hazmat
fonte
O que é Get-PSDrive -PSProvider FileSystemrelatado quando você abre um novo console do Powershell?
Jscott # 5/15
@jscott: Em um novo console, eu vejo A, Ce D. No console eu já tenho aberto, eu também vejo Z. Por que o novo console não aparece Z?
Foguete Hazmat
3
Você está executando o Powershell elevado? Nesse caso, tente executá-lo sem "Executar como administrador". Você precisaria mapear novamente a unidade se estiver executando elevada. stackoverflow.com/questions/4742992/…
jscott 5/15
@jscott: Está sendo executado como administrador. Eu também corri Set-ExecutionPolicy -ExecutionPolicy Unrestricted. Estou usando o PowerShell para tentar executar um script para chamar New-ADUser.
Rocket Hazmat
@jscott: Acabei de executar o PowerShell como meu usuário (não como administrador) e ele conseguiu acessar Z:sem problemas.
Rocket Hazmat

Respostas:

8

Você precisa disponibilizar o mapeamento da unidade para o usuário em que está executando Powershell. Você pode fazer o seguinte para fornecer ao usuário o mesmo mapeamento de unidade:

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

Consulte a seguinte pergunta do SO: Não é possível acessar a unidade de rede no PowerShell executando como administrador

jscott
fonte
Também posso mencionar que o Powershell suporta o uso de PUSHD e POPD (ou mais formalmente: local de envio e local de envio) que podem ser mais adequados para o mapeamento temporário de uma unidade para uma operação específica.
Get-HomeByFiveOClock
5

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

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

No entanto , se eu iniciar esse console como administrador, ele não verá nenhuma unidade mapeada local, pois para um prompt de comando elevado, um (segundo) contexto de segurança diferente é usado para carregar o aplicativo, que não compartilha conexões de rede.

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

Se você deseja automatizar isso, leia os scripts de carregamento automático ao iniciar uma sessão do PowerShell. Basicamente, se você criar uma pasta no seu My Documentschamado WindowsPowerShelle dentro dele, criar um Microsoft.PowerShell_profile.ps1arquivo, ele será acionado toda vez que você iniciar um novo console do PowerShell. Lá, você pode adicionar um net usecomando ou adicionar funções personalizadas que você escreveu que deseja usar.

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

Mark Henderson
fonte
Sim, era o que estava acontecendo aqui. A unidade foi mapeada como meu usuário e o PowerShell estava sendo executado como administrador. Estou acostumado com shells do Linux, não com o PowerShell.
Rocket Hazmat
Essa é uma dica muito boa sobre o prompt do console de administração. O que você usa no seu profile.ps1 para detectar se a sessão é elevada ou não?
STIB