Перечислите каждую подпапку в обратном порядке - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть UNC-путь

$path = "\\ad.testxyz.com\corp\technology\software\data\iso"

Мне нужно применить разрешения для следующих путей:

\\ad.testxyz.com\corp\technology\software\data
\\ad.testxyz.com\corp\technology\software
\\ad.testxyz.com\corp\technology

И я не хочу ничего делать с \\ ad. testxyz.com \ corp \ technology или выше.

Вот мой код. Это «работает», но я столкнулся с проблемой с каталогами, в которых есть пробелы.

$path = "\\ad.domain.com\corp\technology\test\information\software"
#$path = "\\ad.domain.com\corp\technology\payer information\extracts\item load"

# Split string by "\", remove empty elements
$root = (($path.Split("\")).Split('',[System.StringSplitOptions]::RemoveEmptyEntries))

# Recursively list all top level folders in [path]. (Excludes DFS root)
for ($i=2; $i -lt $root.Length - 1; $i++) {
    # Recursively build every directory up the tree
    $leaf = "\" + $root[$i]
    $branch += $leaf
    $trunk = "\\" + $root[0] + "\" + $root[1] + $branch

    # do work
    Write-Host $trunk
}

Выходы:

\\ad.domain.com\corp\technology
\\ad.domain.com\corp\technology\test
\\ad.domain.com\corp\technology\test\information

Но если я попытаюсь использовать путь спробелы в нем, я получаю следующее

\\ad.domain.com\corp\technology
\\ad.domain.com\corp\technology\payer
\\ad.domain.com\corp\technology\payer\information
\\ad.domain.com\corp\technology\payer\information\extracts
\\ad.domain.com\corp\technology\payer\information\extracts\item
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...