Acessar compartilhamento de rede sem mapear a letra da unidade (PowerShell)


23

Desejo acessar um compartilhamento de rede SMB remoto \\SHARE-HOST\sem mapear uma letra de unidade. Eu posso fazer isso manualmente no Windows digitando \\SHARE-HOST\Share_folder\no explorer. Se eu quiser fazer isso programaticamente, tenho que usar o net usecomando Isso exige que eu especifique uma carta.


O comando Set-Location \\SHARE-HOST\Share-foldernão funciona no Powershell para você? Existe uma mensagem de erro?
Jscott # 28/13

1
"Eu tenho que usar o comando net use. Isso exige que eu especifique uma letra." Você não tem que especificar um: net use * \\share\foldervai usar a próxima letra livre no disco (a partir de Z:)
Kapex

1
Na verdade, você não precisa especificar nem usar uma letra com uso líquido. Veja a primeira resposta aqui: serverfault.com/questions/580369/…
Joshua Hanley

Respostas:


26

O PowerShell suporta totalmente caminhos UNC; você pode usá-los em qualquer lugar em que um diretório ou nome de arquivo seja esperado:

  • Set-Location \\servername\sharename
  • Get-ChildItem \\servername\sharename
  • Copy-Item \\servername1\sharename1\filename.ext \\servername2\sharename2
  • Remove-Item \\servername\sharename\foldername\filename.ext

No entanto, você precisa de direitos de acesso adequados para realmente se conectar ao compartilhamento remoto; isso significa que sua conta de usuário já deve ter as permissões necessárias ou você deve estabelecer manualmente uma conexão de rede com o servidor remoto antes de acessar pastas e arquivos nele.

Consulte também aqui: /programming/303045/connecting-to-a-network-folder-with-username-password-in-powershell .


Estranhamente, eu não percebi um comportamento em que não é possível, por exemplo, listar conteúdo, a Get-ChildItemmenos que você altere sua localização atual Set-Locationpara uma máquina remota (por exemplo servername). Possivelmente isso tem algo a ver com máquinas UAC e / win10 +, mas não tenho certeza.
Petr Abdulin

2

Você precisa “navegar” no compartilhamento, a menos que tenha que se autenticar com credenciais alternativas antes, use o seguinte:

get-childitem \\server\share

2

Para acessar uma pasta compartilhada no meu laptop, basta digitar

cd \\MYLAPTOP\C$\Games

Use aspas se o nome de uma pasta tiver espaços:

cd "\\MYLAPTOP\C$\Games\Game Name"

Isso me dá acesso ao sistema de arquivos do computador remoto.

PS Microsoft.PowerShell.Core\FileSystem::\\MYLAPTOP\C$\Games>

cd é um alias para Set-Location(s. http://technet.microsoft.com/en-us/library/ee176962.aspx ) que suporta esses caminhos.

No entanto, eu precisei fazer logon no computador no explorador primeiro tentando abrir o caminho lá. Então funcionou no PS também. Você provavelmente precisará adicionar credenciais de logon no PowerShell primeiro.


1

só quero acrescentar à resposta de massimo que também notei que, se eu estivesse em outros PSDrives, não poderia usar locais de rede, mas locais regulares funcionam bem.

Por exemplo, se estou dentro Cert:\LocalMachine\>ou PS HKLM:\>não possocd \\server\share

se eu Set-Location C:e então Set-Location \\servername\shareele funciona bem.

Também descobri que não precisava mudar para o local da rede para muitos comandos. Por exemplo, eu poderia Get-Content '\\127.0.0.1\C$\eula.1028.txt'de C: \ fine.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.