# Устанавливаем кодировку консоли для корректного отображения кириллицы
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# Подгружаем нужную библиотеку для декодирования ссылок
Add-Type -AssemblyName System.Web
# =====================================================================
# НАСТРОЙКИ
# =====================================================================
$targetUrl = "https://main.atb.su/normdocs/Lists/Docs/ByCategory.aspx?C=6&p_RegDate=20231219%2015%3a00%3a00&p_Created=20231225%2004%3a44%3a04&RootFolder=%2fnormdocs%2fLists%2fDocs%2fpub&PageFirstRow=1&FilterField1=DocCategoryId&FilterValue1=6&View={71C6C749-C001-4601-B766-36AFFD10DEE8}"
$downloadDir = "Downloads_Bank_Docs"
# =====================================================================
if (!(Test-Path $downloadDir)) { New-Item -ItemType Directory -Path $downloadDir | Out-Null }
$uri = [System.Uri]$targetUrl
$baseDomain = "$($uri.Scheme)://$($uri.Host)"
Write-Host "--- Начинаю поиск на странице ---" -ForegroundColor Cyan
try {
# Получаем страницу
$page = Invoke-WebRequest -Uri $targetUrl -UseDefaultCredentials -TimeoutSec 30
# Ищем строки таблицы (ms-itmhover — стандарт для SharePoint)
$rows = [regex]::Matches($page.Content, '(?is)<tr[^>]*class="[^"]*ms-itmhover[^"]*"[^>]*>(.*?)</tr>')
$count = 0
foreach ($row in $rows) {
$rowHtml = $row.Groups[1].Value
# Проверяем статус "Действителен"
if ($rowHtml -match "Действителен") {
# Извлекаем ссылку на файл (регулярка под структуру SharePoint со скриншота 12)
if ($rowHtml -match 'href="([^"]+?\.(pdf|docx?|xlsx?|rtf))"') {
$link = [System.Net.WebUtility]::HtmlDecode($matches[1])
# Собираем полный путь
$fileUrl = if ($link -match "^http") { $link } else { "$baseDomain$($link.StartsWith('/') ? "" : "/")$link" }
# Очищаем имя файла
$fileName = [System.Net.WebUtility]::UrlDecode($fileUrl.Split('/')[-1])
$fileName = $fileName -replace '[\\\/\:\*\?\"\<\>\|]', '_'
$savePath = Join-Path $downloadDir $fileName
if (-not (Test-Path $savePath)) {
Write-Host " [+] Скачиваю: $fileName" -ForegroundColor Green
Invoke-WebRequest -Uri $fileUrl -OutFile $savePath -UseDefaultCredentials
$count++
}
}
}
}
Write-Host "`nГотово! Найдено и скачано файлов: $count" -ForegroundColor White
} catch {
Write-Host " [!] Ошибка: $($_.Exception.Message)" -ForegroundColor Red
}
Read-Host "Нажми Enter для завершения"