Назад | Перейти на главную страницу

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

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

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

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

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

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

cd \\MYLAPTOP\C$\Games

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

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

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

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

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

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

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

get-childitem \\server\share

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

Например, если я в 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: \ отлично.

Добавляя к тому, что другие говорили о путях UNC в PowerShell, если для общего сетевого ресурса требуются другие учетные данные, чем вы вошли в Windows (например, если он находится в домене, в котором вы не находитесь), по моему опыту:

  • Сначала вам нужно один раз просмотреть путь в проводнике, чтобы открыть диалоговое окно учетных данных. Есть флажок "запомнить меня". Используйте диспетчер учетных данных Windows для изменения / удаления запомненных учетных данных.
  • Если сетевой ресурс находится в домене, в который вы не вошли, имя пользователя должно иметь форму theDomain\theUserName.
  • Если вам нужен доступ через PowerShell администратора (он же с повышенными привилегиями), вам придется сделать это через экземпляр File Explorer с повышенными правами.