TGViewer
Системный Администратор Windows Системный Администратор Windows @win_sysadmin · 3.1K subscribers
Post #253 1.17K
👋 Всем админам доброго утра!

Продолжаю тему теневых копий в Windows - на этот раз чисто PowerShell-практика. Теневые копии (VSS) не раз спасали меня, когда нужно быстро вернуть удалённый файл без полноценного восстановления из бэкапа. Ниже - мой минималистичный «набор выживальщика»: создать снапшот, смонтировать, вытащить файл, почистить и настроить расписание.


🚀 Базовые операции VSS через PowerShell

Создать теневую копию тома C:


# PS 5.1/7+ (через CIM)
Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create `
-Arguments @{ Volume = 'C:\'; Context = 'ClientAccessible' } | Out-Null


Список доступных теневых копий:


Get-CimInstance Win32_ShadowCopy |
Sort-Object InstallDate -Descending |
Format-Table ID, VolumeName, InstallDate, ClientAccessible, DeviceObject -Auto


Смонтировать самую свежую копию в папку (удобно лазить по снапшоту проводником):


$sh = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1
$mount = 'C:\ShadowMounts\C_latest'
New-Item -ItemType Directory -Path $mount -Force | Out-Null
$dev = ($sh.DeviceObject.TrimEnd('\')) + '\'
cmd /c "mklink /d `"$mount`" `"$dev`""
# Готово: открывайте C:\ShadowMounts\C_latest


Вытянуть конкретный файл из последней копии (без монтирования):


$path = 'C:\Data\report.xlsx' # что хотим вернуть
$sh = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1
$rel = $path -replace '^[A-Za-z]:\\','' # убрать "C:\"
$src = Join-Path ( ($sh.DeviceObject.TrimEnd('\')) + '\' ) $rel
Copy-Item $src $path -Force


Удалить конкретную теневую копию:


$sh | Remove-CimInstance


🧠 Управление хранилищем теневых копий

Проверить и ограничить размер:


vssadmin list shadowstorage
vssadmin resize shadowstorage /For=C: /On=C: /MaxSize=20%


👉 Если места мало - VSS начнёт сносить самые старые копии. Планируйте «MaxSize».


⏰ Планирование ежедневного снапшота (02:00)


$cmd = 'powershell.exe'
$arg = '-NoProfile -WindowStyle Hidden -Command "Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume=''C:\'';Context=''ClientAccessible''} | Out-Null"'
$action = New-ScheduledTaskAction -Execute $cmd -Argument $arg
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
Register-ScheduledTask -TaskName 'Daily-VSS-C' -Action $action -Trigger $trigger -RunLevel Highest


На серверах с PowerShell 7 можно заменить powershell.exe на pwsh.exe.



🔒 Безопасность и мониторинг

- Рансомварь любит грохать VSS: ищите команды вроде vssadmin delete shadows /all /quiet, wmic shadowcopy delete, diskshadow.exe.
Логи: включите аудит создания процессов (Sysmon Event ID 1) и подпишите правила под эти утилиты и ключевые слова в командной строке.
- Ограничьте утилиты: на рабочих станциях, где VSS админам не нужен — AppLocker/WDAC для vssadmin.exe, wmic.exe, diskshadow.exe.
- Журналы VSS: заглядывайте в Application и Microsoft-Windows-Volume Shadow Copy/Operational при сбоях провайдера.


🧩 Типичные затыки и лайфхаки

- Доступа нет к путям снапшота — добавляйте \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\ в исключения антивируса на время операций.
- Недостаточно места — расширьте shadowstorage или поменяйте диск-хранилище: /For=C: /On=D:.
- Нужны «предыдущие версии» для пользователей - ставьте Context='ClientAccessible' (или ClientAccessibleWriters для VSS-aware приложений).

👉 @win_sysadmin
  • 👍 5
  • 🔥 5
  • ❤ 1
  • 🙏 1
More from @win_sysadmin
  1. Sep 24, 2026👋 Привет, админы! Иногда нужно быстро понять — кто и когда логинился на сервер или важную…
  2. Sep 21, 2026👋 Привет, админы! Из жизни. На продакшн-сервере упал веб-сервис, выяснилось, что SSL-серт…
  3. Sep 16, 2026👋 Привет, админы! Сегодня расскажу про простой, но очень полезный трюк, который помогает…
  4. Sep 14, 2026👋 Привет, админы! На прошлой неделе в нашем кластере файловых серверов неожиданно начал б…
  5. Sep 11, 2026👋 Привет, админы! Как быстро проверить, какие пользователи имеют права администратора на…
  6. Sep 8, 2026👋 Привет, админы! Вспоминаю случай, когда утром в понедельник один из наших веб-сервисов…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →