Accedi alla condivisione di rete senza mappare la lettera di unità (PowerShell)


23

Voglio accedere a una condivisione di rete SMB remota \\SHARE-HOST\senza mappare una lettera di unità. Posso farlo manualmente in Windows digitando \\SHARE-HOST\Share_folder\explorer. Se voglio farlo a livello di codice, devo usare il net usecomando. Questo mi richiede di specificare una lettera.


Il comando Set-Location \\SHARE-HOST\Share-foldernon funziona in Powershell per te? C'è un messaggio di errore?
jscott,

1
"Devo usare il comando net use. Questo mi richiede di specificare una lettera." Non è necessario specificarne uno: net use * \\share\folderutilizzerà la prossima lettera di unità gratuita (a partire da Z:)
kapex,

1
In realtà, non è necessario specificare o utilizzare una lettera con un uso netto. Vedere la prima risposta qui: serverfault.com/questions/580369/…
Joshua Hanley

Risposte:


26

PowerShell supporta completamente i percorsi UNC; puoi usarli ovunque ci si aspetterebbe una directory o un nome di file:

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

Tuttavia, sono necessari i diritti di accesso adeguati per connettersi effettivamente alla condivisione remota; ciò significa che l'account utente deve già disporre delle autorizzazioni necessarie oppure è necessario stabilire manualmente una connessione di rete al server remoto prima di accedere a cartelle e file su di esso.

Vedi anche qui: /programming/303045/connecting-to-a-network-folder-with-username-password-in-powershell .


Stranamente, ho notato un comportamento in cui non è possibile, ad esempio, elencare il contenuto a Get-ChildItemmeno che non si cambi la posizione corrente con Set-Locationla macchina remota (ad es servername.). Forse questo ha qualcosa a che fare con UAC e / o win10 + macchine, ma non ne sono sicuro.
Petr Abdulin,

2

È necessario "sfogliare" la condivisione, a meno che non sia necessario eseguire prima l'autenticazione con credenziali alternative, quindi è possibile utilizzare quanto segue:

get-childitem \\server\share

2

Sono in grado di accedere a una cartella condivisa sul mio laptop semplicemente digitando

cd \\MYLAPTOP\C$\Games

Usa le virgolette se il nome di una cartella ha spazi:

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

Questo mi dà accesso al file system del computer remoto.

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

cd è un alias di Set-Location( http://technet.microsoft.com/en-us/library/ee176962.aspx ) che supporta tali percorsi.

Tuttavia, ho richiesto di accedere prima a quel computer in Explorer provando ad aprire il percorso lì. Quindi ha funzionato anche in PS. Probabilmente è necessario aggiungere prima le credenziali di accesso in PowerShell.


1

voglio solo aggiungere alla risposta di massimo che ho anche notato che se fossi in altri PSDrive non potrei usare le posizioni di rete ma le posizioni normali funzionano bene.

Ad esempio, se ci sono Cert:\LocalMachine\>o PS HKLM:\>non possocd \\server\share

se io Set-Location C:e poi Set-Location \\servername\sharefunziona benissimo.

Ho anche scoperto che non avevo bisogno di passare alla posizione di rete per molti comandi. Ad esempio, potrei Get-Content '\\127.0.0.1\C$\eula.1028.txt'da C: \ fine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.