Я использую это, чтобы сопоставить букву диска в PowerShell v2, и она работает так, что буква диска появляется и может использоваться в Explorer.Доступны только буквы карт памяти?
$Network = New-Object -ComObject "Wscript.Network"
$Network.MapNetworkDrive($drive.name, $drive.value, $true)
Однако, если я затем попытаться использовать эту букву, чтобы сделать что-нибудь в Powershell, скажем, создать папку, я получаю DriveNotFoundException. Но, как я уже сказал, диск есть и можно использовать вручную. Я думал, что мне, возможно, придется немного подождать, или обновить Explorer, или и то, и другое, но, похоже, это ничего не влияет. Однако, если я развернусь и перезапущу скрипт, который проверяет заранее, будет ли диск там, и только создает его, если нет, он увидит диск и не воссоздает, и следующая задача будет работать нормально. Как будто, возможно, буква диска основана на сеансе? Я также попытался добавить
New-PSDrive -name:($drive.name -replace ':', '') -psProvider:FileSystem -root:$drive.value -scope:Global
, а также, в надежде, что это будет обеспечивать диск сеанса на основе, но ни к чему хорошему.
Дополнительная морщина заключается в том, что сценарий должен быть запущен как администратор, но опять же, если я делаю это как два разных сценария, один для создания диска и один для его использования, он работает, когда оба запускаются как администратор. Только когда обе задачи выполняются в одном скрипте, он терпит неудачу.
Один последний момент, я знаю, что PS 3 имеет лучший способ обработки сопоставленных дисков, но из-за неконтролируемых мной я ограничена PS v2.
Там может быть пробел или двоеточие, либо работает, и я найти двоеточие связывает параметр и значение визуально, что делает код более читаемым для меня. EDIT: Прокомментировал ли комментарий о том, что двоеточия удалены? – Gordon