Windows автоматически создает скрытый системный каталог System Volume Information в корне любого подключенного диска с файловой системой NTFS (будь то локальный HDD/SSD диск или съемный USB накопитель). Часто размер каталог System Volume Information может достигать десятки и сотни гигабайт и занимать большую часть диска. В этой статье мы разберемся зачем нужен каталог System Volume Information, что в нем хранится, и как его корректно очистить.

Пустые папки могут не занимать место на диске, но они загромождают вашу систему. Все пустые папки на жестком диске имеют одинаковые названия, и навигация между ними превращается в проблему. Эта проблема может распространяться на производительность.
Удаляя файлы из командной строки, вы должны быть аккуратны, поскольку вы рискуете потерять свои данные. Эти команды обычно не используют мусорную корзину вашей операционной системы. Когда вы удаляете что-либо, оно исчезает, если вы не создали его резервную копию. Всегда регулярно создавайте резервные копии важных файлов. Если что-нибудь пойдет не так, вы можете восстановить свои данные.
С помощью рекурсивных способов можно удалить больше файлов и папок, чем планировалось. Всегда дважды проверяйте путь, который вы нацеливаете в своей команде, чтобы убедиться, что вы хотите. Даже небольшая опечатка может вызвать проблемы.
Всегда тщательно просматривайте содержимое любого каталога, который вы собираетесь удалить. Просмотрите верхний уровень и все вложенные каталоги, чтобы убедиться, что вы не упустите.
МИНИСТЕРСТВО НАУКИ
И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ
ФЕДЕРАЦИИ
федеральное
государственное автономное образовательное
учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ
НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ
канд. тех. наук, | ||||
должность, |
по дисциплине: |
СТУДЕНТ ГР. № | Кафка Р. С. | ||||
Цель
работы: изучение
основ языка сценариев в операционной
системе Windows и получение практических
навыков работы в Windows PowerShell.
1.
Выполните все упражнения этого раздела
пособия.
2.
Результаты выполнения команд зафиксируйте
на скриншотах.
3.
Исследуйте структуру PowerShell по перечню
четырех разделов справки: Alias,
Cmdlet,
Provider
и HelpFile.
Результат выполнения команд зафиксируйте
на скриншотах.
4.
Согласно варианту задания из таблицы
2.1. задайте команды для нахождения
справочной информации в среде PowerShell по
двум псевдонимам, представленным в
таблице 2.2. Запишите функциональное
назначение этих команд и справочную
информацию в виде имени, синтаксиса,
псевдонимов при ее наличии. В случае
отсутствия информации в таком виде,
сделайте скриншот.
Вариант
задания считать за номер первой
исследуемой команды.
Номер
первого псевдонима: 9
Номер
второго псевдонима: 1
Хочу выдать права группе пользователей на определенные папки, в них разорваны наследования.
Я выгрузил все пути в этой папке и хочу дать доступ группе на всё что внутри.
Код ниже, но не могу понять как скормить путь.
Список путей в файле csv в столбце FullName3.
Не могу понять как вытянуть данные из файлы csv.
Import-Csv "C:\csv.csv"
$identity = 'domain\Full Acces'
$rights = 'FullControl'
$inheritance = 'ContainerInherit, ObjectInherit'
$propagation = 'None'
$type = 'Allow'
$ACE = New-Object System.Security.AccessControl.FileSystemAccessRule($identity,$rights,$inheritance,$propagation, $type)
$Acl = Get-Acl -Path "\\server\folder"
$Acl.AddAccessRule($ACE)
(Get-Item = $_.FullName3).SetAccessControl($acl)задан 28 авг. 2023 в 9:12
Как выбрать данные из *.csv:
Исходный файл c:\test\csv.csv
FullName1,FullName2,FullName3
FIO1,blablabla,c:\test\src\
FIO2,blablabla,c:\test\folder\Код в файле read_csv.ps1
$table=Import-Csv "c:\test\csv.csv"
foreach ($row in $table) { $ACL = Get-Acl $row.FullName3 $ACL | Format-Table
} Каталог: C:\test
Path Owner Access
---- ----- ------
src BUILTIN\Администраторы BUILTIN\Администраторы Allow FullControl... Каталог: C:\test
Path Owner Access
---- ----- ------
folder BUILTIN\Администраторы BUILTIN\Администраторы Allow FullControl...ответ дан 28 авг. 2023 в 10:47

Алексей Р
2 золотых знака8 серебряных знаков20 бронзовых знаков
С помощью PowerShell вы можете определить точный размер определенного каталога в Windows (с учетом всех вложенных директорий). Это позволит узнать размер каталог без использования сторонних утилит, таких как TreeSize или WinDirStat. Кроме того, PowerShell позволяет более гибко отфильтровать файлы по типам или размерам, которые нужно учитывать при расчете размера папки.
Для получения размеров файлов в каталогах используются следующие командлеты PowerShell:
- Get-ChildItem (алиас
gci
) — позволяет получить список файлов в директории (включая вложенные объекты) - Measure-Object (алиас
measure
) – складывает размеры всех файлов для получения суммарного размера директории
Например, чтобы получить полный размер директории F:\ISO в Гб, выполните команду:
Рассмотрим используемые параметры:
-
-Force
— учитывать скрытые и системные файлы -
-Recure
— получать список файлов во вложенных директориях -
-ErrorAction SilentlyContinue
– игонрировать объекты, к которым у текущего пользователя нет доступа -
-measure Length -sum
– сложить размеры всех файлов (свойство Length) -
.sum/ 1Gb
– вывести только суммарный размер в Гб
В данном примере размер директории около 37 Гб (без учета NTFS сжатия). Чтобы округлить результаты до двух символов после запятой, выполните команду:

С помощью PowerShell можно получить суммарный размер всех файлов определенного типа в директории. Например, чтобы узнать сколько места занято ISO файлами, добавьте параметр
*.iso
:

Можно использовать другие фильтры для выбора файлов, которые учитываются при расчете размера директории. Например, вы можете получить размер файлов, созданных за 2023 год
Указанная выше PowerShell команда при подсчете размера файлов в каталоге будет выводить неверные данные, если в директории есть символические или жесткие ссылки. Например, в каталоге C:\Windows находится много жестких ссылок на файлы в хранилище компонентов WinSxS. В результате такие файлы могут быть посчитаны несколько раз. Чтобы не учитывать в результатах жесткие ссылки, используйте следующую команду (выполняется довольно долго):

$targetfolder='C:\Users'
$dataColl = @()
gci -force $targetfolder -ErrorAction SilentlyContinue | ? { $_ -is [io.directoryinfo] } | % { $len = 0 gci -recurse -force $_.fullname -ErrorAction SilentlyContinue | % { $len += $_.length } $filesCount = (gci -recurse -force $_.fullname -File -ErrorAction SilentlyContinue | Measure-Object).Count $dataObject = New-Object PSObject -Property @{ Folder = $_.fullname SizeGb = ('{0:N3}' -f ($len / 1Gb)) -as [single] filesCount=$filesCount } $dataColl += $dataObject }
$dataColl | Out-GridView -Title "Размер вложенных каталогов и количество файлов"
% — это алиас для цикла foreach-object.
Использование Windows Explorer для поиска и удаления пустых папок
Вот пошаговая инструкция по поиску пустых папок с помощью Windows Explorer:
- Нажмите Win + E, чтобы открыть Проводник.
- Перейдите к диску или папке, где вы хотите найти пустые каталоги.
- Перейдите на вкладку «Просмотр» и переключите «Скрытые элементы» в контекстном меню, чтобы сделать все скрытые файлы видимыми для поиска.
- Активируйте ленту поиска, введя слово для включения поиска, выберите Настройки поиска и переключите Все вложенные папки для полного поиска.
- Нажмите «Размер» , выберите «Пустой» (0 КБ) и выберите «Папка» в разделе «Тип» .
- Или введите type:folder size:empty в поле поиска, чтобы найти пустые каталоги.
- Удалите нужные папки из результатов поиска.
Выполненные упражнения
Упражнение
2.1. Запуск оболочки Windows PowerShell.
Запустил
оболочку PowerShell.
Для этого нажал Пуск > Выполнить, затем
ввёл имя файла powershell
и нажал Enter
(рис. 1-2).

Рисунок
1 – Запуск PowerShell
через Выполнить

Рисунок
2 – Командное окно оболочки PowerShell
Для
выхода из среды Windows
PowerShell
автономного компьютера набрал команду
exit
и нажал клавишу Enter.
Запустил
Командную строку cmd.exe (рис. 3).В
Командной строке набрал команду dir,
позволяющую вывести список
файлов
и подпапок из указанной папки (рис. 3).

Рисунок
3 – Результат выполнения команды dir в
среде cmd.exe
Запустил
программную оболочку PowerShell.В
командной строке оболочки набрал
команду dir,
которая является псевдонимом команды
Get-Child
ltem
(Cmdlet).
Список полученных данных расширен по
сравнению с результатом выполнения
этой же команды в среде cmd.exe
(рис.4).

Рисунок
4 – Результат выполнения команды dir в
среде Power Shell
В
редакции команды dir
появился столбец Mode,
отражающий возможные режимы использования
программных средств. Режимы определяются
отдельно для каталогов (d)
и файлов (а). Полный перечень характеристик,
выводимый по различным командам
объектно-ориентированной программной
оболочки, можно просмотреть с помощью
командлета Get-Member
(рис.5).
Осуществил
вызов справки по командлету в интернете
с помощью команды: “Get-Help
Get-Member
-Online”
(рис.5).

Рисунок
5 – Справочная информация по командлету
Get-Member в интернете
Сравнил
полученные результаты. В Командной
Строке DIR – отображает список файлов
и подкаталогов в каталоге. Когда как в
Power
Shell
команда Get-ChildItem
имеет гораздо более гибкое использование.
Она показывает «все вещи внутри вещи»,
и это может быть не только список файлов
в каталоге, но и другие объекты в системе.
Упражнение
2.3. Выполнение команды help в разных
программных средах
Запустил
Командную строку cmd.exe.В
Командной строке набрал команду help,
позволяющую узнать перечень внутренних
команд ОС Windows (рис.6).

Рисунок
6 – Результат выполнения команды help в
среде cmd.exe
Запустил
программную оболочку PowerShell.В
командной строке оболочки набрал
команду help, которая является псевдонимом
команды Get-Help (рис.7).

Рисунок
7 – Результат выполнения команды help в
среде Power Shell
Сравнил
полученные результаты. Обе программы
отображают синтаксис и полезную
информацию, относящуюся к упомянутой
команде / командлету.Вывел
на экран монитора результат выполнения
этой команды с разными параметрами:
− Get-Help
* перечисляет все команды Windows PowerShell
(рис.8).
Символ
«*» означает поиск по шаблону. Он
используется, если после текста для
поиска может любая последовательность
символов.

Рисунок
8 – Фрагмент результата выполнения
команды Get-Help *
− Get-Help
<команда> выводит справку по
соответствующей команде (рис.9).

Рисунок
9 – Справочная информация по командлету
Get-Member в среде Power Shell
− Get-Help
<команда> -Detailed выводит подробную
справку с примерами команды Использование
команды help для получения подробных
сведений о команде help:
Get-Help
Get-Help
–Detailed
(рис.10).

Рисунок
10 – Фрагмент результата выполнения
команды
Упражнение
2.4. Связывание команд в конвейер.
Создал
собственный «файл книги» с названием
Powershell-Help.txt.
Нажал
на <Cтрелочку
вверх> и в Командной строке появилась
предыдущая команда, которую дополнил
следующими записями, где E:\Powershell-Help.txt
– расположение создаваемого текстового
файла в каталоге, которое выбираете
самостоятельно.
Нашёл
его в каталоге и открыл в Блокноте.
На
рис.12 приведены данные из результирующего
файла справочника по группе команд
Export-Alias
среды PowerShell,
открытого в Блокноте.

Рисунок
12 – Результат создания файла-книги с
названием Powershell-Help.txt
Проанализировал
полученный результат. Конвейер PowerShell
представляет собой мощное средство,
позволяющее с помощью комбинации ряда
составных команд выполнять серию
последовательных операций на одном
или нескольких объектах. Объединив
группу составных команд в конвейер,
можно получить инструкцию, в которой
будет указано, каким образом следует
форматировать ее выходные данные, где
их размещать и как определить операцию
сортировки выходных данных.Проверил
другие
параметры:
Get-Alias, Import-Alias, New-Alias, Set-Alias (рис.13).

Рисунок
13 – Результат выполнения конвейров с
другими параметрами
Соседние файлы в предмете Операционные системы
Что хранится в каталоге System Volume Information?
Системный каталог System Volume Information находится в корне любого диска Windows и скрыт по умолчанию. Чтобы увидеть этот каталог, разрешите отображать защищенные системных файлов в проводнике Windows: Options -> View -> снимите чекбокс на пункте Hide protected operation system files (Recommended).

Доступ к этому каталогу есть только у системы (учетная запись NT AUTHORITY\SYSTEM ). Даже встроенный администратор Windows не может открыть и просмотреть содержимое каталога System Volume Information. При его в проводнике появится ошибка доступа:
Расположение недоступно Нет доступа к C:\System Volume Information Отказано в доступе

Чтобы открыть каталог System Volume Information можно назначить свою учетную запись владельцем и предоставить NTFS права. Например, с помощью команд:
takeown /f "C:\System Volume information"
icacls "C:\System Volume Information" /grant Corp\kbuldogov:F

Но особого смысла в этом нет. Кроме того, вы можете по неосторожности удалить в папке важные файлы.
Восстановить исходные права доступа на каталоге System Volume Information:
icacls "C:\System Volume Information" /setowner "NT Authority\System"
icacls "C:\System Volume Information" /remove corp\kbuldogov
Для просмотра содержимого каталога System Volume Information нужно запустить консоль PowerShell с правами SYSTEM;
PsExec.exe -i -s powershell.exe
Вывести содержимое каталога и отсортировать файлы в порядке уменьшения размера:

Размер каталога можно получить такой командой PowerShell:

Что же хранится в каталоге System Volume Information? Мне удалось найти информацию о следующих службах, хранящих свои файлы в этой папке (список не является исчерпывающим):
- WindowsImageBackup — данные точек восстановления системы на клиентских системах или резервные копии System State, сделанные через Windows Server Backup (wbadmin), на серверных ОС;
- База данных службы индексирования (Indexing Service), используемая для быстрого поиска файлов (в том числе для поиска в Outlook);
- База данных Distributed Link Tracking Service;
- Снапшоты (теневые копии) дисков, создаваемые службой Volume Shadow Copy , которые можно использовать для восстановления старых версий файлов. Для каждого снапшота создается отдельный файл без расширения с длинным ID;

- Настройки дисковых квот NTFS;
- База и чанки службы дедупликации файлов;
- База репликации DFSR (dfsr.db);
- Файл WPSettings.dat службы хранилища (StorSvc);
- На USB накопителях в этом каталоге хранится файл IndexerVolumeGuid, в котором хранится уникальная метка диска, используемая службой поиска Windows;
- AppxProgramDataStaging, AppxStaging – резервные копии UWP приложений Windows (можно использовать для восстановления после удаления приложений Microsoft Store);
- Лог утилиты проверки диска CHKDSK
- AadRecoveryPasswordDelete и ClientRecoveryPasswordRotation – служебные каталоги BitLocker, используемые при хранении ключа восстановления BitLocker в AD или Azure Entra ID
Примечание. Не удаляете вручную файлы в каталоге System Volume Information, т.к. в нем хранится важная информация, в том числе необходимая для восстановления системы.
Использование PowerShell для поиска и удаления пустых папок
Выполните следующие действия, чтобы найти пустые папки и удалить их с помощью PowerShell:
- Откройте меню «Пуск» , введите «Powershell», щелкните правой кнопкой мыши и выберите «Запуск имени администратора» .
- Введите cd /d DriveName:\To\FolderPath в окне PowerShell и нажмите Enter .
- Чтобы получить список пустых каталогов, выполните эту команду: Get-ChildItem -Directory -Recurse | Where-Object { $_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0 } | Select-Object FullName
- После просмотра списка, если вы решите удалить пустые каталоги, выполните эту команду: Get-ChildItem -Directory -Recurse | Где { $_.GetFiles().Count -eq 0 -and $_.GetDirectories().Count -eq 0 } | Remove-Item -Force
Этот код сканирует папки и подкаталоги в DriveName:\To\FolderPath и находит пустые каталоги (без файлов, без подпапок) и удаляет их.
Удалить теневые копии в папке System Volume Information
Чаще всего проблема большого размера каталога System Volume Information вызван файлами теневых копий, которые создала служба VSS. Чем чаще создаются теневые копии и чем чаще изменяются файлы на диске, тем быстрее растет размер этого каталога.
На скриншоте ниже видно, что в папке System Volume Information есть системный файл размером больше 120 Гб.

Для быстрой очистки каталога System Volume Information можно удалить старые теневые копии. Чтобы вывести информацию о дисках, для которых служба VSS создает теневые копии, выполните:

vssadmin 1.1 - Программа командной строки для администрирования службы теневого копирования томов
(C) Корпорация Майкрософт (Microsoft Corportion), 2001-2013.
Сопоставление хранилища теневой копии
Для тома: (C:)\\?\Volume{9a9e5a02-db8e-447d-9fef-6029dc4f7f10}\
Том хранилища теневой копии: (C:)\\?\Volume{9a9e5a02-db8e-447d-9fef-6029dc4f7f10}\ Использованный объем хранилища теневой копии: 4,69 ГБ (2%)
Выделенный объем хранилища теневой копии: 5,17 ГБ (2%)
Максимальный объем хранилища теневой копии: 23,3 ГБ (10%)Утилита покажет текущий и максимальный размер данных теневой копии для каждого диска. По умолчанию для хранения данных теневых копий резервируется 10% диска.
На скриншоте ниже видно, что максимальный размер теневых копий (
Maximum Shadow Copy Storage space: UNBOUNDED (100%)
) не ограничен. В этом случае файлы теневых копий VSS могут занять весь диск.

Настройки квот VSS на дисках могут изменить программы резервного копирования, которые вы устанавливали на компьютер.

Успешно изменен размер для соответствия хранилища теневой копии
После этого (в Windows 10 и 11) выведите список имеющихся теневых копий для системного диска C: с датами их создания:
Чтобы освободить место, удалите самую старую теневую копию:

Можете удалить все VSS снимки:
Также вы можете изменить настройки службы восстановления Windows, которая создает точки восстановления из панели управления System Protection (Защита системы). Выполните команду
systempropertiesprotection
, выберите системный диск и нажмите на кнопку Configure (Настроить).

- Включить/отключить защиту системы;
- Узнать текущий размер места под хранение резервных копий образа;
- Изменить настройки квот для хранения точек восстановления;
- Удалить все имеющиеся точки восстановления.

Также для уменьшения размера каталога System Volume Information вы можете:
- Перенести данные VSS снимков на другой NTFS диск (
vssadmin add shadowstorage /for=c: /on=d: /maxsize=30%
); - Отключить/перенастроить функцию История файлов Windows;
- Выполнить очистку системных файлов на диске с помощью встроенной утилиты cleanmgr.exe (свойства диска -> Очистка диска).

В Windows Server для резервного копирования состояния системы обычно используется Windows Server Backup (WSB). Можно удалить старые версии копий system state с помощью команды:

Для быстрой очистки старых версий резервных копий состояния системы (system state) и снапшотов в Windows Server используйте утилиту diskshadow:
DiskShadow
Delete shadows OLDEST c:\
При каждом запуске команды удаляется самая старая теневая копия (снапшот) диска.

Использование командной строки для поиска пустых папок и удаления их
Вот как найти пустые папки и удалить их с помощью Windows Explorer:
- Откройте меню «Пуск» , введите cmd , щелкните правой кнопкой мыши и выберите «Запуск имени администратора» .
- В окне командной строки введите cd /d имя диска:\до\путь в папку и нажмите Enter , чтобы открыть указанный каталог.
- Чтобы получить список пустых файлов, выполните следующую команду: for /f «delims=» %d in (‘dir /ad/b/s ^| sort /R’) do @dir /b «%d» | findstr «^» >nul || эхо %d
- После просмотра списка, если вы решите удалить пустые папки, выполните эту команду: for /f «delims=» %d in (‘dir /ad/b/s ^| sort /R’) do @dir /b » %d» | findstr «^» >nul || rd «%d»
Этот код сканирует все папки и вложенные папки из C:\To\FolderPath для поиска и удаления пустых каталогов.
Очистка System Volume Information после удаления файлов на томе с дедупликацией
При анализе содержимого каталога System Volume Information в Windows Server вы можете заметить, что много места занимает каталог Dedup\ChunkStore. Это означает, что на диске включена дедупликация файлов.

Служба дедупликации при нахождении одинаковых чанков в файлах заменяет их на ссылку на уникальный чанк, который сохраняется в каталог System Volume Information. Если вы переместили или удалили оптимизированные файлы с дедуплицированного тома, старые чанки не удаляются немедленно. Эти блоки удаляются специальным заданием сбора мусора (GarbageCollection), которое запускается раз в неделю.
Не отключайте полностью дедупликацию для тома (
Start-DedupJob -Volume D: -Type Unoptimization
), пока не убедитесь что на диске достаточно достаточно свободного места для хранения де-оптимизированных файлов.
Чтобы немедленно запустить процедуру удаления неиспользуемых чанков, выполните команду PowerShell:
start-dedupjob -Volume C:-Type GarbageCollection
Следующее задание проверит целостность оставшихся чанков:
start-dedupjob -Volume C: -Type DataScrubbing
Для мониторинга этих задач используйте командлет:
После окончания задач неиспользуемые чанки в каталоге System Volume Information будут удалены.



