Dostęp do udziału sieciowego bez litery dysku mapowania (PowerShell)


23

Chcę uzyskać dostęp do zdalnego udziału sieciowego SMB \\SHARE-HOST\bez mapowania litery dysku. Mogę to zrobić ręcznie w systemie Windows, wpisując \\SHARE-HOST\Share_folder\w Eksploratorze. Jeśli chcę to zrobić programowo, muszę użyć net usepolecenia. To wymaga ode mnie podania litery.


Czy polecenie Set-Location \\SHARE-HOST\Share-foldernie działa w programie PowerShell dla Ciebie? Czy jest komunikat o błędzie?
jscott

1
„Muszę użyć polecenia net use. To wymaga ode mnie podania litery.” Nie musisz go określać: net use * \\share\folderużyje następnej litery wolnego dysku (zaczynając od Z:)
kapex

1
W rzeczywistości nie musisz podawać ani używać litery w ogóle przy użyciu sieci. Zobacz pierwszą odpowiedź tutaj: serverfault.com/questions/580369/…
Joshua Hanley,

Odpowiedzi:


26

PowerShell w pełni obsługuje ścieżki UNC; możesz ich używać wszędzie, gdzie oczekiwana jest nazwa katalogu lub pliku:

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

Jednak potrzebne są odpowiednie prawa dostępu, aby faktycznie połączyć się ze zdalnym udziałem; oznacza to, że albo twoje konto użytkownika musi mieć wymagane uprawnienia, albo musisz ręcznie ustanowić połączenie sieciowe ze zdalnym serwerem przed uzyskaniem dostępu do folderów i plików na nim.

Zobacz także tutaj: /programming/303045/connecting-to-a-network-folder-with-username-password-in-powershell .


O dziwo, zauważyłem zachowanie, w którym nie można na przykład wyświetlić listy treści, Get-ChildItemchyba że zmienisz swoją bieżącą lokalizację Set-Locationna zdalną maszynę (tj servername.). Być może ma to coś wspólnego z UAC i / lub maszynami z Win10 +, ale nie jestem pewien.
Petr Abdulin,

2

Musisz „przeglądać” udział, chyba że musisz wcześniej uwierzytelnić się przy użyciu alternatywnych poświadczeń, możesz skorzystać z poniższych:

get-childitem \\server\share

2

Jestem w stanie uzyskać dostęp do folderu współdzielonego na moim laptopie, po prostu pisząc

cd \\MYLAPTOP\C$\Games

Użyj cudzysłowów, jeśli nazwa folderu ma spacje:

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

To daje mi dostęp do systemu plików komputera zdalnego.

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

cd to pseudonim Set-Location(s. http://technet.microsoft.com/en-us/library/ee176962.aspx ), który obsługuje takie ścieżki.

Jednak najpierw musiałem zalogować się na tym komputerze w Eksploratorze, próbując otworzyć tam ścieżkę. Potem działało również w PS. Najpierw prawdopodobnie musisz dodać poświadczenia logowania w PowerShell.


1

chcę tylko dodać do odpowiedzi massimo, że zauważyłem również, że gdybym był w innych PSDrivach, nie mógłbym używać lokalizacji sieciowych, ale zwykłe lokalizacje działają dobrze.

Na przykład, jeśli jestem w środku Cert:\LocalMachine\>lub PS HKLM:\>nie mogęcd \\server\share

jeśli ja Set-Location C:i wtedy Set-Location \\servername\shareto działa dobrze.

Odkryłem również, że nie musiałem przełączać się do lokalizacji sieciowej dla wielu poleceń. Na przykład mógłbym Get-Content '\\127.0.0.1\C$\eula.1028.txt'z C: \ fine.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.