![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Обработка путей превышающих 260 символов |
|
PowerShell - Обработка путей превышающих 260 символов
|
Старожил Сообщения: 208 |
Доброго времени суток.
Помогите пожалуйста допилить скрипт, для обработки путей больше 260 символов. $path = "c:\f1" $logfile = "C:\f1\log.txt" if (!(Test-Path $path)) { Write-Host "Folder not found" -ForegroundColor Red break } $folder_list = Get-ChildItem -Path $path -Recurse -Directory foreach ($folder in $folder_list) { #$ACL = Get-Acl $folder.PSPath $ACL = Get-Acl $folder.FullName if ($ACL.AreAccessRulesProtected -ne $false) { $str = $folder.fullname Add-Content -Value $str -Path $logfile } } Remove-PSDrive -Name X $rootpath = "C:\test" $logfile = "c:\test\log.txt" try { $folder_list = Get-ChildItem $rootpath -Recurse -Directory -ErrorAction Stop foreach ($folder in $folder_list) { $folder.Name Write-Host "+++++++" $folder.FullName Write-Host "-------" $folder.PSPath Write-Host "=========================" ($folder.PSPath).Length Write-Host "\\\\\\\\\\\" } } catch { Write-Host "ERROR" $folder.FullName ($folder.FullName).Length $newrootfolder = New-PSDrive -Name X -PSProvider FileSystem -Root $folder.FullName Get-ChildItem $newrootfolder } Подскажите пожалуйста, в чём может быть проблема? |
|
Отправлено: 21:27, 08-12-2015 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать На удивление, ни один из вариантов, как оказалось, не заработал с UNC и DFS путями ((
Как сказал всем известный поисковик, subinacl вообще не понимает dfs. SetACL понимает и UNC и DFS, но вывод получается примерно такой: Цитата:
|
|
Отправлено: 16:12, 29-12-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:33, 30-12-2015 | #12 |
Старожил Сообщения: 208
|
Профиль | Отправить PM | Цитировать Kazun,
Большое спасибо за все ответы в теме! ![]() Интересный модуль, изучим-с) Странно, что во время поиска не наткнулся на него. В попытках завести один из предложенных Вами вариантов выше, заработал тот, что использует subinacl, ниже рабочий вариант с unc. cls $subinacl = "C:\temp\subinacl.exe" #путь до улититы subinacl.exe $log = "c:\temp\log.txt" #путь до лог файла $log_subinacl = "c:\temp\log_subinacl.txt" #путь до внутреннего лог файла subinacl $path = "\\uncpath...\*" #корневая папка для поиска & $subinacl /outputlog=$log_subinacl /subdirectories=directories $path #запуск subinacl в фоне, с записью инфы в лог $content = (Get-Content $log_subinacl) -match "(\+File|\/control)" #выбираем из файла строки по условию $result = for($i=0; $i -le $content.Count; $i+=2) { $status = $content[$i+1] -match "SE_DACL_PROTECTED" #если в строке, есть подстрока, записываем в переменную if($status) { $content[$i].TrimStart("+File ") #удаляем указанную подстроку из строки } } Remove-Item $log_subinacl #удаляем лог subinacl $result | Out-File $log #записываем результат в переменную P.S. Но приведённый Вами модуль, мне нравится большей, этих костыльных решений ) |
Последний раз редактировалось pogo, 30-12-2015 в 14:42. Отправлено: 14:31, 30-12-2015 | #13 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Загрузка - Subst и запоминание последних путей | Mancoffee | Microsoft Windows 7 | 9 | 31-05-2017 23:17 | |
CMD/BAT - Обработка более 1028 символов в переменной | worship | Скриптовые языки администрирования Windows | 4 | 27-02-2015 13:34 | |
CMD/BAT - [решено] Создать список путей | gen0m.rsw | Скриптовые языки администрирования Windows | 7 | 08-09-2010 02:55 | |
PHP и XML | Обработка неалфавитных символов | Coutty | Вебмастеру | 6 | 17-12-2008 10:42 | |
mc - запоминание путей | Аlchemist | Программное обеспечение Linux и FreeBSD | 1 | 10-09-2008 12:06 |
|