none
С серверов не открывается библиотека в проводнике 0x80004005. SP 2013, как чистить папки? RRS feed

  • Общие обсуждения

  • Добрый день!

    Не знаю куда написать, все одно на другое...

    Задача - чистить одну папку в библиотеке раз в неделю. Единственное решение, которое я сразу нашел - использовать скрипт PS, типа такого:

    $Path = "\\server\DocLib\Папка обмена"
    $Days = "-7"
    $CurrentDate = Get-Date
    $OldDate = $CurrentDate.AddDays($Days)
    Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Item

    Т.е., если с клиента нажать кнопку "отобразить в проводнике" и поменять косые - можно провалиться внутрь папки и работать с ней как из проводника, скрипт работает на ура. Но, на всех серверах 2008R2, он просто не открывает проводник, выдав неизвестную ошибку 0x80004005. Мне помочь хоть с чем, либо папку другими средствами грохать или же как-то ее открыть на серверах.

    Было сделано:

    • Отключен ipV6
    • Включен netbios овер tcp\ip

    Есть у кого-нибудь идеи?


    24 ноября 2013 г. 13:17

Все ответы

  • Вам раз в неделю надо ВСЮ папку чистить?

    Или только документы, дата создания\модификации которых больше недели?

    24 ноября 2013 г. 15:55
  • В общем если Вам нужно именно чистить библиотеку раз в неделю,

    то используйте этот powershell скрипт:

    Add-PSSnapin Microsoft.SharePoint.PowerShell
    
    # Replace siteurl with actual web url
    $web = Get-SPWeb -Identity "siteurl"
    # Replace docurl with document library url
    $list = $web.GetList("docurl")
    
    function DeleteFiles {
        param($folderUrl)
        $folder = $web.GetFolder($folderUrl)
        foreach ($file in $folder.Files) {
            # Delete file by deleting parent SPListItem
            Write-Host("DELETED FILE: " + $file.name)
            $list.Items.DeleteItemById($file.Item.Id)
        }
    }
    
    # Delete root files
    DeleteFiles($list.RootFolder.Url)
    
    # Delete files in folders
    foreach ($folder in $list.Folders) {
        DeleteFiles($folder.Url)
    }
    
    # Delete folders
    foreach ($folder in $list.Folders) {
        try {
            Write-Host("DELETED FOLDER: " + $folder.name)
            $list.Folders.DeleteItemById($folder.ID)
        }
        catch {
            # Deletion of parent folder already deleted this folder
        }
    }

    Настройте на еженедельный запуск, используйте для этого windows scheduler.

    24 ноября 2013 г. 19:18
  • Доброе утро, спасибо за ответ!

    Хотелось бы уточнить по скрипту, в явную не могу проследить, что он делает.

    Мне нужно чистить не всю библиотеку (тут думаю можно скриптом грохать ее и пересоздавать заново), а только 1 папку в ней (с файлами и подпапками).

    $list = $web.GetList("docurl")

    Ссылку указывать на библиотеку (видимо тогда этот скрипт не совсем то) или же саму папку вида "http://server.aspx/D0%BA%D0%B0%20%D0%BE%D0%B1%D0%BC%D0%B5%D0%BD%D0%B0&FolderCTID=0x012000E8E6270671D5524"?

    ps.Не могу сейчас проводить эксперименты! (





    • Изменено Oleg.A 28 ноября 2013 г. 6:58
    28 ноября 2013 г. 4:58
  • Коллеги, ап ап! Можно немного действие скрипта описать? Негде его протестировать!

    2 декабря 2013 г. 5:39