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

Как разделить родительский путь пути unc с помощью PowerShell?

Вот путь UNC, который у меня есть.\\sharespace\test1\10.0.1212.1

Могу ли я получить его родительский путь\\sharespace\test1\?

Есть несколько вариантов. Если у вас есть доступ к общему ресурсу, то:

(Get-Item '\\sharespace\test1\10.0.1212.1').Parent.Fullname

Если у вас нет доступа к общему ресурсу, вы можете пойти по более неприятному пути, манипулируя строкой различными способами. Это один:

$path = '\\sharespace\test1\10.0.1212.1'
[string]::Join('\', $path.Split('\')[0..$($path.Split('\').Length-2)])

Для этого есть командлет:

Split-Path \\sharespace\test1\10.0.1212.1
\\sharespace\test1

Он не включает завершающий '\', но если вы используете Join-Path, PowerShell позаботится о том, чтобы добавить его, если это необходимо.

ПРИМЕЧАНИЕ: Split-Path и Join-Path пытаются разрешить путь на локальном компьютере, поэтому, если путь имеет букву диска (скажем, 'F:'), которая не является допустимым диском на локальном компьютере, эти командлеты будут вызывать ошибка. С такими путями UNC у вас не должно возникнуть проблем.

Вот простой способ выделить родительский путь из полного UNC-пути.

$fullPath = "\\sharespace\test1\10.0.1212.1"
$parentPath = "\\" + [string]::join("\",$fullPath.Split("\")[2..3])