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

8

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

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

cd: невозможно найти путь 'Z: \', потому что он не существует.

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

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

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

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

Ракета Хазмат
источник
Что Get-PSDrive -PSProvider FileSystemсообщает при открытии новой консоли Powershell?
Jscott
@jscott: В новой консоли, я вижу A, Cи D. В консоли у меня уже открыто, я тоже вижу Z. Почему новая консоль не отображается Z?
Ракета Хазмат
3
Вы используете Powershell с повышенными правами? Если это так, попробуйте запустить его без «Запуск от имени администратора». Вам нужно будет повторно подключить диск, если работает с повышенными правами. stackoverflow.com/questions/4742992/…
jscott
@jscott: он работает от имени администратора. Я тоже побежал Set-ExecutionPolicy -ExecutionPolicy Unrestricted. Я использую PowerShell, чтобы попытаться запустить скрипт для вызова New-ADUser.
Ракета Хазмат
@jscott: я только что запустил PowerShell как мой пользователь (не администратор), и он смог получить доступ Z:без проблем.
Ракета Хазмат

Ответы:

8

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

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

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

jscott
источник
Позвольте мне также упомянуть, что Powershell поддерживает использование PUSHD и POPD (или более формально: push-location и pop-location), которые могут быть более подходящими для временного сопоставления диска для конкретной операции.
Get-HomeByFiveOClock
5

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

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

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

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

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

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

Марк Хендерсон
источник
Да, это то, что здесь происходит. Диск был подключен как мой пользователь, а PowerShell работал от имени администратора. Я привык к оболочкам Linux, а не PowerShell.
Ракета Хазмат
Это действительно хороший совет по поводу приглашения консоли администратора. Что вы используете в вашем profile.ps1, чтобы определить, повышен ли сеанс или нет?
STIB