Серия «Философия PowerShell»

11

Microsoft окончательно прощается с PowerShell 2.0 в Windows

Корпорация Microsoft объявила о полном удалении устаревшего компонента Windows PowerShell 2.0 из операционных систем Windows 11 и Windows Server 2025, начиная с августа 2025 года. Этот шаг является частью глобальной стратегии по повышению безопасности, упрощению экосистемы PowerShell и избавлению от устаревшего кода.

Windows PowerShell 2.0, впервые представленный в Windows 7, был официально признан устаревшим еще в 2017 году, однако оставался доступным в качестве дополнительного компонента для обеспечения обратной совместимости. Теперь Microsoft делает решительный шаг, полностью исключая его из будущих релизов.

Хронология изменений

Процесс удаления будет проходить поэтапно:

  • Июль 2025 года: PowerShell 2.0 уже удален из предварительных сборок Windows Insider.

  • Август 2025 года: Компонент будет удален из Windows 11, версия 24H2.

  • Сентябрь 2025 года: PowerShell 2.0 будет исключен из Windows Server 2025.

Все последующие выпуски этих операционных систем будут поставляться без PowerShell 2.0.

Почему PowerShell 2.0 уходит в прошлое?

Основная причина удаления — соображения безопасности. В PowerShell 2.0 отсутствуют ключевые функции защиты, появившиеся в более поздних версиях, такие как:

  • Интеграция с интерфейсом для проверки на вредоносное ПО (AMSI).

  • Расширенное логирование блоков скриптов.

  • Режим ограниченного языка (Constrained Language Mode).

Эти упущения делали PowerShell 2.0 привлекательной целью для злоумышленников, которые могли использовать его для обхода современных систем защиты. Кроме того, удаление устаревшего компонента позволит Microsoft сократить сложность кодовой базы и упростить поддержку экосистемы PowerShell.

Что это значит для пользователей и администраторов?

Для большинства пользователей это изменение пройдет незамеченным, поскольку современные версии PowerShell, такие как PowerShell 5.1 и PowerShell 7.x, остаются доступными и полностью поддерживаются. Однако организациям и разработчикам, использующим устаревшие скрипты или программное обеспечение, которые явно зависят от PowerShell 2.0, необходимо принять меры.

Рекомендации по переходу

Microsoft настоятельно рекомендует:

  • Мигрировать скрипты и инструменты на более новые версии PowerShell. PowerShell 5.1 обеспечивает высокую обратную совместимость практически со всеми командами и модулями. PowerShell 7.x предлагает кроссплатформенность и множество современных функций.

  • Обновить или заменить устаревшее программное обеспечение. Если старое приложение или установщик требуют PowerShell 2.0, необходимо найти более новую версию продукта. Это касается и некоторых серверных продуктов Microsoft (Exchange, SharePoint, SQL), для которых существуют обновленные версии, работающие с современным PowerShell.

Затронутые версии Windows

Удаление PowerShell 2.0 коснется следующих версий операционных систем:

  • Windows 11 (Home, Pro, Enterprise, Education, SE, Multi-Session, IoT Enterprise) версия 24H2.

  • Windows Server 2025.

Более ранние версии Windows 11, такие как 23H2, по-видимому, сохранят PowerShell 2.0 в качестве опционального компонента.

Этот шаг Microsoft знаменует собой конец целой эпохи в администрировании Windows, подчеркивая приверженность компании к более безопасной и современной вычислительной среде.

Релизы PS 7


Мой цикл статей о технологии PowerShell:
Философия PowerShell.

Показать полностью
41

Диагностика и восстановление дисков с помощью PowerShell

продолжение статьи Как проверить и исправить ошибки на жестком диске в Windows: шпаргалка по CHKDSK и PowerShell

Дисклеймер. На пикабу все еще не завезли редактор кода, поэтому такое убогое форматирование. Впрочем, вы можете читать статью на github


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

Версия: Руководство актуально для Windows 10/11 и Windows Server 2016+.

Ключевые командлеты для работы с дисками

Основные командлеты

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

Шаг 1: Базовая проверка состояния системы

Начните с общей оценки состояния дисковой подсистемы.

Просмотр всех подключенных дисков

Команда Get-Disk предоставляет сводную информацию о всех дисках, которые видит операционная система.

Get-Disk

Вы увидите таблицу с номерами дисков, их размерами, статусом (Online или Offline) и стилем разделов (MBR или GPT).

Пример: Найти все диски, которые находятся в офлайне.

Get-Disk | Where-Object IsOffline -eq $true

Проверка физического «здоровья» дисков

Командлет Get-PhysicalDisk обращается к состоянию самого оборудования.

Get-PhysicalDisk | Select-Object FriendlyName, MediaType, HealthStatus, OperationalStatus

Обратите особое внимание на поле HealthStatus. Оно может принимать значения:

  • Healthy: Диск в порядке.

  • Warning: Есть проблемы, требуется внимание (например, превышение порогов S.M.A.R.T.).

  • Unhealthy: Диск в критическом состоянии и может отказать.


Шаг 2: Анализ и восстановление логических томов

После проверки физического состояния переходим к логической структуре — томам и файловой системе.

Информация о логических томах

Команда Get-Volume показывает все смонтированные тома в системе.

Get-Volume | Format-Table DriveLetter, FileSystem, HealthStatus, SizeRemaining, Size

Ключевые поля:

  • DriveLetter — Буква тома (C, D и т.д.).

  • FileSystem — Тип файловой системы (NTFS, ReFS, FAT32).

  • HealthStatus — Состояние тома.

  • SizeRemaining и Size — Свободное и общее пространство.

Проверка и восстановление тома (аналог chkdsk)

Командлет Repair-Volume — это современная замена утилиты chkdsk.

1. Проверка тома без исправлений (только сканирование)

Этот режим безопасен для выполнения на работающей системе, он только ищет ошибки.

Repair-Volume -DriveLetter C -Scan

2. Полное сканирование и исправление ошибок

Этот режим является аналогом chkdsk C: /f. Он блокирует том на время работы, поэтому для системного диска потребуется перезагрузка.

Repair-Volume -DriveLetter C -OfflineScanAndFix

❗️ Важно: Если вы запускаете эту команду для системного диска (C:), PowerShell запланирует проверку при следующей загрузке системы. Чтобы запустить её немедленно, перезагрузите компьютер.

Пример: Автоматически проверить и исправить все тома, состояние которых отлично от Healthy.

Get-Volume | Where-Object {$_.HealthStatus -ne 'Healthy'} | ForEach-Object { Write-Host "Repairing volume $($_.DriveLetter)..." Repair-Volume -DriveLetter $_.DriveLetter -OfflineScanAndFix }


Шаг 3: Глубокая диагностика и S.M.A.R.T.

Если базовые проверки не выявили проблем, но подозрения остались, можно копнуть глубже.

Анализ системных журналов

Ошибки дисковой подсистемы часто фиксируются в системном журнале Windows.

Get-WinEvent -LogName System | Where-Object {$_.Message -like "*disk*"} | Select-Object -First 20

Для более точного поиска можно фильтровать по источнику события:

Get-WinEvent -ProviderName 'Microsoft-Windows-DiskDiagnostic' -MaxEvents 10

Проверка статуса S.M.A.R.T.

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) — технология самодиагностики дисков. PowerShell позволяет получить эти данные.

Способ 1: Использование WMI (для совместимости)

Get-WmiObject -Namespace "root\wmi" -Class MSStorageDriver_FailurePredictStatus

Если PredictFailure = True, диск предсказывает скорый сбой. Это сигнал к немедленной замене.

Способ 2: Современный подход через CIM и Storage-модули

Более современный и подробный способ — использовать командлет Get-StorageReliabilityCounter.

Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object PhysicalDisk, Wear, Temperature, ReadErrorsTotal, WriteErrorsTotal

Этот командлет предоставляет ценную информацию, такую как износ (актуально для SSD), температуру и количество ошибок чтения/записи.


Практические сценарии для системного администратора

Вот несколько готовых примеров для повседневных задач.

1. Получить краткий отчет о здоровье всех физических дисков.

Get-PhysicalDisk | Format-Table DeviceID, FriendlyName, MediaType, HealthStatus, OperationalStatus

2. Создать CSV-отчет о свободном месте на всех томах.

Диагностика и восстановление дисков с помощью PowerShell Powershell, Инструкция, Администрирование, Диагностика, IT, Длиннопост

3. Найти все разделы на конкретном диске (например, диске 0).

Get-Partition -DiskNumber 0

4. Запустить диагностику системного диска с последующей перезагрузкой.

Repair-Volume -DriveLetter C -OfflineScanAndFix Restart-Computer -Force

Полезно? Подпишись.

Удачи!

UPD:

Встречайте серию:

Философия PowerShell.

Показать полностью 1
16

Как проверить и исправить ошибки на жестком диске в Windows: шпаргалка по CHKDSK и PowerShell

Со временем на жестком диске или SSD могут накапливаться логические ошибки, появляться поврежденные сектора, что приводит к замедлению работы системы, сбоям программ и даже потере данных. К счастью, в Windows есть встроенные инструменты для диагностики и исправления таких проблем.

В этой шпаргалке я покажу два способа контроля состояний дисков: утилиту chkdsk и команды PowerShell.

Часть 1: Утилита CHKDSK

CHKDSK (Check Disk) — это стандартная утилита командной строки, которая проверяет файловую систему тома на наличие логических и физических ошибок.

Как запустить CHKDSK

Для выполнения команд, которые вносят изменения в систему, вам понадобятся права администратора.

  1. Нажмите Win + S или кнопку «Пуск».

  2. Введите cmd или «Командная строка».

  3. В результатах поиска щелкните правой кнопкой мыши по «Командная строка» и выберите «Запустить от имени администратора».

Основные параметры (ключи) CHKDSK

Команда имеет следующий синтаксис: chkdsk [диск:] [параметры]

Часто используемые параметры:

  • chkdsk C: Запускает проверку диска C: в режиме «только для чтения». Утилита сообщит о найденных ошибках, но не будет их исправлять.

  • /f Исправляет ошибки на диске. Если на диске есть открытые файлы (что почти всегда так для системного диска), утилита предложит выполнить проверку при следующей перезагрузке системы. Пример: chkdsk D: /f

  • /r Ищет поврежденные сектора (bad sectors) и пытается восстановить информацию, которую можно прочитать. Этот ключ включает в себя функциональность ключа /f, поэтому использовать их вместе необязательно, хотя и не является ошибкой. Проверка с /r занимает значительно больше времени. Пример: chkdsk D: /r

  • /x Принудительно отключает том перед проверкой, если это необходимо. Все открытые дескрипторы для этого диска станут недействительными. Этот ключ также включает в себя функциональность /f. Пример: chkdsk D: /x

  • /b (только для файловой системы NTFS) Выполняет повторную оценку поврежденных кластеров на диске. Этот ключ является самым полным, так как включает в себя функциональность /r. Пример: chkdsk C: /b

  • /scan (только для NTFS) Запускает онлайн-проверку тома. Это означает, что диск не нужно отключать, и вы можете продолжать работать в системе во время сканирования. Однако для исправления найденных проблем потребуется следующий ключ или перезагрузка. Пример: chkdsk C: /scan

  • /spotfix (только для NTFS) Выполняет точечное, очень быстрое исправление ошибок на томе. Требует отключения диска, как и ключ /f. Пример: chkdsk D: /spotfix

Примеры запуска CHKDSK

  • Быстрая проверка диска D: без исправления:

    chkdsk D:

  • Проверка и исправление ошибок на диске D:

    chkdsk D: /f

  • Полная проверка системного диска C: с поиском поврежденных секторов и их восстановлением:

    chkdsk C: /f /r

    или просто:

    chkdsk C: /r

Что делать, если диск используется?

При попытке запустить проверку с исправлением (/f или /r) для системного диска (обычно C:), вы увидите сообщение:

Невозможно выполнить команду CHKDSK, так как указанный том используется другим процессом. Следует ли выполнить проверку этого тома при следующей перезагрузке системы? (Y/N)

Нажмите клавишу Y, а затем Enter. Проверка будет запланирована и автоматически начнется при следующей перезагрузке компьютера.


Часть 2: Команды PowerShell

PowerShell — это оболочка автоматизации, которая предлагает современные и гибкие команды для управления системой.

Как запустить PowerShell

Как и в случае с командной строкой, вам понадобятся права администратора.

  1. Нажмите Win + S или кнопку «Пуск».

  2. Введите powershell.

  3. В результатах поиска щелкните правой кнопкой мыши по «Windows PowerShell» и выберите «Запустить от имени администратора».

Основная команда: Repair-Volume

В PowerShell для проверки и исправления дисков используется командлет Repair-Volume.

Сначала может быть полезно посмотреть список всех томов в системе с помощью команды:

Get-Volume

Основные параметры Repair-Volume

  • -DriveLetter Указывает букву диска, который нужно проверить.

  • -Scan Сканирует том на наличие ошибок и сообщает о них. Это аналог chkdsk без ключей. Пример: Repair-Volume -DriveLetter D -Scan

  • -SpotFix Выполняет быстрое онлайн-исправление без необходимости отключать том надолго. Аналог chkdsk /spotfix. Пример: Repair-Volume -DriveLetter D -SpotFix

  • -OfflineScanAndFix Выполняет полноценную проверку и исправление диска в автономном режиме. Это самый полный аналог команды chkdsk /f /r. Система попросит перезагрузку, если том используется. Пример: Repair-Volume -DriveLetter C -OfflineScanAndFix

Примеры PowerShell

  • Просканировать диск C: на наличие ошибок (без исправления):

    Repair-Volume -DriveLetter C -Scan

    Вы увидите результат в поле HealthStatus (например, Healthy или Needs-Repair).

  • Выполнить быстрое исправление для диска D:

    Repair-Volume -DriveLetter D -SpotFix

  • Запланировать полную проверку и исправление системного диска C: при следующей перезагрузке:

    Repair-Volume -DriveLetter C -OfflineScanAndFix

    PowerShell, как и chkdsk, уведомит вас о необходимости перезагрузки и запланирует задачу.

Для большинства пользователей результат работы chkdsk C: /r и Repair-Volume -DriveLetter C -OfflineScanAndFix будет одинаковым. Выбор зависит от ваших предпочтений и задач.

Важное замечание: Перед любыми серьезными операциями с диском, особенно если вы подозреваете наличие физических проблем, всегда создавайте резервную копию важных данных! Инструменты могут исправить ошибки, но не могут гарантировать 100% сохранность информации на поврежденном носителе.


У меня также есть шпаргалка по diskpart

подпишись, если интересно

Удачи!

UPD:

Продолжение поста с подробным описанием использования командлетов PowerShell

Серия Философия PowerShell

Показать полностью
39

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell

@RaiJu, пост для вас.

Подробное руководство по настройке Wake-on-LAN и Magic Packet с помощью PowerShell.

Magic Packet — это специальный сетевой фрейм, посылаемый для пробуждения устройства через Wake-on-LAN. Чтобы WoL работал, сетевой адаптер должен поддерживать Magic Packet и быть настроен на его приём.

Дисклеймер. На пикабу нет редактора кода, поэтому картинками и плохим форматирование. В конце статьи вы найдете ссылку на github, где все нормально отображается.

Шаг 1: Идентификация устройства.

> Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell Powershell, Сетевая карта, Системное администрирование, Гайд, IT, Длиннопост

Эта команда говорит системе:

"Покажи мне все устройства, в названии которых есть слово «Realtek», и выведи по ним таблицу с четырьмя колонками: полное имя, статус, класс и системный ID."

  1. Get-PnpDevice: Берет полный список всех Plug-and-Play устройств.

  2. | (Конвейер): Передает список дальше.

  3. Where-Object { ... }: Фильтрует список, оставляя устройства, чье имя (FriendlyName) содержит "Realtek".

  4. | (Конвейер): Передает отфильтрованный список.

  5. Select-Object ...: Форматирует вывод, показывая только нужные свойства.

Запоминаем устройство в $device

$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Записываем его свойства в переменные
> $DeviceName = $device.FriendlyName
> $InstanceId = $device.InstanceId
> $pmKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId\Device Parameters"

Шаг 2: Глобальное разрешение на пробуждение

Команда powercfg дает устройству "официальное" разрешение от Windows на пробуждение системы.
> powercfg -deviceenablewake $DeviceName

Эта команда эквивалентна установке флажка "Разрешить этому устройству выводить компьютер из ждущего режима".

Отключение:
> powercfg -devicedisablewake $DeviceName

Шаг 3: Настройка драйвера.

Настройки WOL находятся в параметрах самого драйвера, которые хранятся в реестре. Чтобы установить флажок "Только разрешать магическому пакету выводить компьютер из ждущего режима", используем команду Set-ItemProperty.

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 1

Обратное действие — отключение WOL (Value 0):

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 0

Здесь возникает проблема. Имя этого параметра может отличаться у разных производителей. Например, для Intel это *WakeOnMagicPacket, а для Realtek — WakeOnMagicPacket (без *). Если настройка не применяется, проверьте правильное имя командой Get-ItemProperty -Path $pmKey и используйте его.

Шаг 4: Завершающая настройка через CIM

Для полной уверенности в том, что настройки управления питанием применены корректно, используем современный стандарт CIM (Common Information Model).

Находим CIM-объект, связанный с нашим устройством.
> $adapterCim = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object { $_.InstanceName -like "*$($instanceId.Split('\')[-1])*" }

Применяем к нему изменения.
> if ($adapterCim) { Set-CimInstance -CimInstance $adapterCim -Property @{ Enable = $true } }

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell Powershell, Сетевая карта, Системное администрирование, Гайд, IT, Длиннопост

Весь процесс

Готовый скрипт можно скачать отсюда.
Статья здесь

Полезно? Подпишись.
Понравилось — ставь «+»
Удачи! 🚀

Другие статьи о PowerShell

Философия PowerShell. Части 0,1 Вступление и первый командлет

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов

Часть 3: Навигация и управление файловой системой. Знакомство с операторами логики и функциями

Диагностика и восстановление дисков с помощью PowerShell

Показать полностью 1
Отличная работа, все прочитано!