Доступ к общему сетевому ресурсу без сопоставления буквы диска (PowerShell)


23

Я хочу получить доступ к удаленному сетевому ресурсу SMB \\SHARE-HOST\без сопоставления буквы диска. Я могу сделать это вручную в Windows, набрав \\SHARE-HOST\Share_folder\в проводнике. Если я хочу сделать это программно, я должен использовать net useкоманду. Это требует от меня указать письмо.


Команда Set-Location \\SHARE-HOST\Share-folderне работает в Powershell для вас? Есть ли сообщение об ошибке?
Jscott

1
«Я должен использовать команду net use. Для этого нужно указать букву». Вам не нужно указывать один: net use * \\share\folderбудет использоваться следующая буква свободного диска (начиная с Z:)
kapex

1
На самом деле, вам не нужно указывать или использовать письмо вообще с использованием сети. Смотрите первый ответ здесь: serverfault.com/questions/580369/…
Джошуа Хэнли

Ответы:


26

PowerShell полностью поддерживает UNC-пути; Вы можете использовать их везде, где ожидается каталог или имя файла:

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

Однако вам необходимы надлежащие права доступа для фактического подключения к удаленному общему ресурсу; это означает, что либо ваша учетная запись пользователя уже должна иметь необходимые разрешения, либо вы должны вручную установить сетевое подключение к удаленному серверу, прежде чем обращаться к папкам и файлам на нем.

Смотрите также здесь: /programming/303045/connecting-to-a-network-folder-with-username-password-in-powershell .


Как ни странно, я описал поведение, когда невозможно, например, перечислить содержимое, Get-ChildItemесли вы не измените свое текущее местоположение Set-Locationна удаленный компьютер (то есть servername). Возможно, это как-то связано с UAC и / или машинами win10 +, но не уверен.
Петр Абдулин

2

Вам необходимо «просмотреть» общий ресурс, если только вам не нужно заранее пройти аутентификацию с альтернативными учетными данными, тогда вы можете использовать следующее:

get-childitem \\server\share

2

Я могу получить доступ к общей папке на своем ноутбуке, просто набрав

cd \\MYLAPTOP\C$\Games

Используйте кавычки, если в имени папки есть пробелы:

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

Это дает мне доступ к файловой системе удаленного компьютера.

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

cd - это псевдоним Set-Location(s. http://technet.microsoft.com/en-us/library/ee176962.aspx ), который поддерживает такие пути.

Однако мне сначала нужно было войти на этот компьютер в проводнике, пытаясь открыть путь к нему. Тогда это работало и в PS. Возможно, вам сначала нужно добавить учетные данные для входа в PowerShell.


1

просто хочу добавить к ответу Массимо, что я также заметил, что если бы я был в других PSDrive, я не мог бы использовать сетевые расположения, но обычные расположения работают нормально.

Например, если я нахожусь Cert:\LocalMachine\>или PS HKLM:\>я не могуcd \\server\share

если у меня Set-Location C:то Set-Location \\servername\shareи работает нормально.

Я также обнаружил, что мне не нужно переключаться в сетевое расположение для многих команд. Например я мог Get-Content '\\127.0.0.1\C$\eula.1028.txt'из C: \ нормально.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.