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() }
}