2013-08-21 2 views
4

Так что я получил путь UNC, как так:Split-Path с корневым каталогом UNC

«\\ сервер \ папка»

Я хочу, чтобы получить только путь к серверу, например, «\\ сервер. Сплит-путь "\\ сервер \ папка" -Парантные возвращает "". Все, что я пытаюсь сделать с корнем, терпит неудачу. Например, Get-Item "\\ server" также не работает.

Как я могу безопасно получить путь от «\\ server» с «\\ server \ folder» в PowerShell?

+0

является постом любого использования этой неисправности сервера? http://serverfault.com/questions/297690/how-to-split-parent-path-of-a-unc-path-by-using-powershell –

+0

Не очень, Split-Path и т. д. отлично работают для пути form "\\ server \ folder1 \ folder2" – mamidon

+0

Для пути UNC корневой каталог является именем сервера + общим именем. –

ответ

9

Используя System.Uri класс и запрашивая его свойство host:

$uri = new-object System.Uri("\\server\folder") 
$uri.host # add "\\" in front to get exactly what you asked 

Примечания: путь UNC, корневой каталог является имя_сервером плюс имя_ресурс часть.

+0

Мне нравится кастинг с использованием типа URI над New-Object, но +1 '$ URI = [URI]" \\ Server \ Folder "' '$ URI.Host' –

0
$fullpath = "\\server\folder" 
$parentpath = "\\" + [string]::join("\",$fullpath.Split("\")[2]) 
$parentpath 
\\server 
+0

$ parentPath =" \\ "+ [string]: : присоединиться ("\", $ fullPath.Split ("\") [2..3]) –

1

примера с использованием регулярного выражения:

'\\server\share' -replace '(?<!\\)\\\w+'