Я понимаю, что это старый вопрос, но я хотел бы поделиться другим способом сделать это:
$drive = Get-PSDrive -Name (get-location).Drive.Name $root = if($drive.DisplayRoot -ne $null){$drive.DisplayRoot} else {$drive.Root} Join-Path -Path $root -ChildPath $drive.CurrentLocation
Get-PSDrive извлекает всю информацию о диске (имя, используемое / свободное место, поставщик, корень и текущее местоположение), а передача параметра Name в качестве текущей буквы диска (с использованием get-location) позволяет работать в нескольких сценариях (это также извлечет информацию о локальных дисках на машине).
Чтобы заставить его работать как на локальном, так и на сопоставленном диске, выполняется сравнение, чтобы заполнить $ root буквой диска или сетевым расположением. .Root отправит обратно букву диска, а .DisplayRoot отзовет сетевой путь (ноль, если это локальный путь, который является причиной для сравнения)
Используя Join-Path, вы можете собрать путь, который будет возвращать букву диска и текущее местоположение, если это локальный путь, сетевой путь и текущее местоположение, если это подключенный диск.