2014-06-12 3 views
1

У меня есть слишком длинные каталоги (удар по ограничению на 260 символов), поэтому я пытаюсь сопоставить путь к буквенному приводу (T :).Powershell Use Mapped Drive As Root Path

То, что я нахожу, слишком длинное имя пути, вернуло .TargetName записей об ошибках поиска в корневом каталоге общего ресурса файла. Таким образом, длинное имя пути находится в $ errorRecord.

Это код, у меня есть на данный момент:

foreach ($record in $errorRecord) 
{ 
New-PSDrive -Name "T" -PSProvider FileSystem -Root ($record.CategoryInfo).TargetName -Persist 

$path = "T:\" 

$ACLs = get-acl -path $path -recurse | 
ForEach-Object { $_.Access } | 
Where {$_.IdentityReference -notlike "*BUILTIN*" -and $_.IdentityReference -notlike "*NT AUTHORITY*"} 
Foreach ($ACL in $ACLs) 
{ 
    $OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference 
    Add-Content -Value $OutInfo -Path "C:\Permissions2.csv" 
} 
Remove-PSDrive T 
} 

Так что получает путь к файлу, устанавливает его в T: \, а затем (предполагается) получить информацию из рекурсивных папок под диск T: \.

Что выводится, однако, это полное имя пути диска T: \ с его информацией о разрешении, но не идет ниже этой точки - предположительно из-за предела символа.

Как изменить выход, чтобы быть только буквенным диском «T: \», чтобы он, надеюсь, копал глубже? Спасибо за любую помощь.

ответ

0

Предположим, что длинный путь на C составляет 300 символов. Используйте такой блок, чтобы создать новый корень:

PS C:\> subst t: c:\foo\bar\<250 chars>\ # new win32 logical drive 
PS C:\> new-psdrive temp filesystem -root t:\ # new powershell drive 
PS C:\> cd temp: 
PS temp:\> cd blah\blurgh\<remaining path>\ 

Имеют смысл?

+0

Вид. С помощью этого метода вам нужно будет вручную определить путь длины символа и поместить его в него? –