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

Доступ к уже подключенному сетевому диску в PowerShell

Я запускаю установку Windows Server 2012 внутри VMWare Workstation. У меня включены общие папки, так что водите Z: отображается на \\vmware-host. Я могу правильно получить доступ к этому диску в проводнике (я могу получить доступ Z: внутри "нормального" `cmd) и я могу нормально открывать файлы.

Я открыл PowerShell и попытался cd Z: и я получил следующую ошибку:

cd: не удается найти путь "Z: \", потому что он не существует.

Почему PowerShell не может найти уже подключенный сетевой диск?

Я немного погуглил и нашел New-PSDrive команда. Я выполнил следующее:

New-PSDrive -Name 'Z' -PSProvider FileSystem -Root 'Z:\'

но я все равно получаю ту же ошибку, что и выше. Что мне нужно сделать, чтобы получить доступ к общим папкам VMWare внутри PowerShell.

Вам необходимо сделать сопоставление дисков доступным для пользователя, с которым вы работаете. Powershell так как. Вы можете сделать следующее, чтобы предоставить этому пользователю такое же сопоставление дисков:

net use Z: "\\vmware-host\Shared Folders"

См. Следующий вопрос SO: Не удается получить доступ к сетевому диску в PowerShell под управлением администратора

Вы запускаете эту консоль PowerShell как администратор или как текущий пользователь?

Если вы запускаете его из командной строки без повышенных прав, он должен видеть все ваши локально подключенные сетевые диски. Я сейчас в той же ситуации, что и ты, и x: сопоставлен с \\vmware-host\[folder], а Get-PSDrive -PSProvider FileSystem показывает мне все мои локально сопоставленные диски.

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

Хорошая новость заключается в том, что вам просто нужно сопоставить диск в консоли администратора только один раз, и он останется в этом контексте безопасности (до перезагрузки, я думаю).

Если вы хотите автоматизировать это, вам следует прочитать об автозагрузке скриптов при запуске сеанса PowerShell. Обычно, если вы создаете папку в своем My Documents называется WindowsPowerShell и внутри этого создать Microsoft.PowerShell_profile.ps1 файл, он будет срабатывать каждый раз, когда вы запускаете новую консоль PowerShell. Там вы можете добавить net use или добавьте написанные вами пользовательские функции, которые вы хотите использовать.

Например, у меня есть тот, который окрашивает мой курсор в красный цвет для административных консолей, и имеет функцию, которую я могу легко вызвать, чтобы подписать мои сценарии PS1.