Я хочу получить доступ к удаленному сетевому ресурсу 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 (например, если он находится в домене, в котором вы не находитесь), по моему опыту:
theDomain\theUserName
.