С помощью 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.
Возможно, эта статья была переведена автоматически. Если вы хотите поделиться своим мнением о ее качестве, используйте форму обратной связи в нижней части страницы.
Содержание статьи
Инструкции
- Войдите в виртуальную машину, чтобы настроить для возможного дампа памяти.
- Откройте окно ISE PowerShell с правами администратора и запустите его от имени администратора.

Рис. 1. Откройте окно IsE PowerShell с правами администратора на виртуальной машине.
- Скопируйте следующие команды PowerShell в окно PowerShell ISE :
wmic recoveros set DebugInfoType = 2 Control Panel

Рис. 2. Скопируйте следующие команды PowerShell в окно PowerShell ISE.
- Выберите и выполните следующую команду:
wmic recoveros set DebugInfoType = 2”

Рис. 3. Выберите и выполните команду «wmic recoveros set DebugInfoType = 2».
- Убедитесь, что выполнено обновление.
- Выберите Панель управления и нажмите Система и безопасность.

Рис. 5. Нажмите Система.
- Выберите Дополнительные параметры системы.

Рис. 6. Выберите Дополнительные параметры системы в системе.
- Нажмите Параметры в разделе Загрузка и восстановление поддона.

Рис. 7. В разделе Запуск и восстановление нажмите Параметры.
- Убедитесь, что параметр Автоматический перезапуск НЕ выбран. Другие параметры должны соответствовать показанным ниже параметрам:

Рис. 8. Убедитесь, что параметр Автоматический перезапуск НЕ выбран.
- Если настройки соответствуют снимку экрана на шаге 10, нажмите OK, чтобы закрыть поддон конфигурации запуска и восстановления.
- Когда виртуальная машина снова не отвечает, принудительно выполните дамп памяти вручную. Файл дампа должен находиться в папке «%SystemRoot%\MEMORY». Расположение DMP, которое обычно называется «C:\Windows».
Действия по принудительному выполнению дампа памяти вручную с хоста Hyper-V
- Войдите на хост Hyper-V виртуальной машины, чтобы настроить для ручного дампа памяти.
- Откройте окно Администрирование PowerShell и выполните следующую команду:
Get-VM -Name “W2019” | Debug-VM -InjectNonMaskableInterrupt
- При выполнении указанной выше команды должно отобразиться то, что показано на снимке экрана ниже:

Рис. 10. Снимок экрана с результатами предыдущей команды
- Нажмите Да для всех, чтобы завершить процесс принудительного дампа памяти.
- Должно появиться следующее сообщение с возможностью повторного подключения к виртуальной машине:

Рис. 11. Отобразится снимок экрана с сообщением для повторного подключения к виртуальной машине.
- При подключении к виртуальной машине в Диспетчере Hyper-V должен отображаться экран, аналогичный следующему:

Рис. 12. Снимок экрана виртуальной машины в дисплее подключения Hyper-V Manager
- Выполните сброс виртуальной машины, чтобы снова загрузить операционную систему:

Рис. 13. Выполните сброс виртуальной машины, чтобы снова загрузить операционную систему.
- Созданный файл дампа памяти должен быть в каталоге C:\Windows:

Рис. 14. Снимок экрана недавно созданного файла дампа памяти в каталоге C:\Windows.
- Память. Файл DMP можно удалить для анализа.
Свойства статьи
Затронутый продукт
Дата последней публикации
28 Feb 2024


