Как отменить излечение файла в библиотеке документов с помощью powershell скрипта

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

# ===== НАСТРОЙКИ =====
$siteUrl     = "http://sp2013/sites/YourSite"   # URL сайта
$libraryName = "Документы"                      # Имя библиотеки (как в URL/на странице)
$fileName    = "FileName.docx"                  # Имя файла (без пути к папке)
#$folderRel   = "SubFolder1/SubFolder2"         # Относительный путь к папке внутри библиотеки (если нужно)

# ===== ЛОГИКА =====
$web = Get-SPWeb $siteUrl

try {
    # Папка библиотеки
    $folder = $web.GetFolder($libraryName)
    if (-not $folder.Exists) {
        Write-Host "Папка библиотеки '$libraryName' не найдена" -ForegroundColor Red
        return
    }

    # Если нужен поиск внутри подпапок – можно пройтись рекурсивно, но здесь берём только корень библиотеки
    $file = $folder.Files | Where-Object { $_.Name -eq $fileName }

    if ($file -eq $null) {
        Write-Host "Файл '$fileName' не найден в библиотеке '$libraryName' (корневая папка)" -ForegroundColor Yellow
        return
    }

    if ($file.CheckOutStatus -ne "None") {
        Write-Host "Файл извлечён. Выполняется UndoCheckOut()..." -ForegroundColor Cyan
        $file.UndoCheckOut()
        $file.Update()
        Write-Host "Извлечение отменено для файла: $($file.Url)" -ForegroundColor Green
    } else {
        Write-Host "Файл '$fileName' не извлечён (CheckOutStatus = None)" -ForegroundColor Yellow
    }
}
finally {
    if ($web -ne $null) { $web.Dispose() }
}

Вариант по URL файла

Если удобнее работать с полным относительным URL файла, можно сделать так:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$siteUrl  = "http://sp2013/sites/YourSite"
$fileUrl  = "/sites/YourSite/Документы/Folder1/FileName.docx"  # server-relative URL файла

$web = Get-SPWeb $siteUrl

try {
    $file = $web.GetFile($fileUrl)

    if (-not $file.Exists) {
        Write-Host "Файл по URL '$fileUrl' не найден" -ForegroundColor Red
        return
    }

    if ($file.CheckOutStatus -ne "None") {
        Write-Host "Файл извлечён пользователем $($file.CheckedOutByUser)" -ForegroundColor Cyan
        $file.UndoCheckOut()
        $file.Update()
        Write-Host "Извлечение отменено для файла: $fileUrl" -ForegroundColor Green
    } else {
        Write-Host "Файл не извлечён (CheckOutStatus = None)" -ForegroundColor Yellow
    }
}
finally {
    if ($web -ne $null) { $web.Dispose() }
}

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *