Powershell посмотреть диски в системе
Gets a list of all PhysicalDisk objects visible across any available Storage Management Providers, or optionally a filtered list.
Syntax
Форматирование раздела из PowerShell
Отформатируем полученный раздел в файловой системе NTFS и зададим метку тома DBData:
Format-Volume -DriveLetter L -FileSystem NTFS -NewFileSystemLabel DBData -Confirm:$false
Description
The Get-PhysicalDisk cmdlet gets a list of all PhysicalDisk objects visible across any available Storage Management Providers, or optionally a filtered list of disks.
Syntax
Example 3: Get all USB disks
This example gets all disks attached via the USB bus by piping the output of Get-Disk to the Where-Object cmdlet, and filtering by the USB value of the Bustype property.
Examples
Создаем разделы на диске
Чтобы создать новый раздел на диске используется командлет New-Partition. Создадим раздел размером 10 Гб и назначим ему букву диска L:
New-Partition –DiskNumber 1 -Size 10gb -DriveLetter L
Если раздел должен занимать все доступное место на диске, используйте атрибут UseMaximumSize. Для автоматического назначения буквы диска используется параметр AssignDriveLetter (иногда буква диска может автоматически на назначаться).
New-Partition –DiskNumber 1 -AssignDriveLetter –UseMaximumSize
Вы можете изменить назначенную букву диска так:
Set-Partition –DriveLetter L -NewDriveLetter U
Если нужно увеличить имеющийся раздел, сначала выведите доступное пространство для расширения для данного раздела:
Get-PartitionSupportedSize -DriveLetter L | Format-List
Потом можно увеличить размер раздела до максимального:
$MaxSize = (Get-PartitionSupportedSize -DriveLetter L).SizeMax
Resize-Partition -DriveLetter L -Size $MaxSize
Если нужно сделать конкретный раздел активным используется команда:
Set-Partition -DriveLetter T -IsActive $true
Example 2: Get a disk by disk number
This example gets disk 6.
Inputs
You can pipe an iSCSIConnection object to the iSCSIConnection parameter.
You can pipe an iSCSISession object to the iSCSISession parameter.
You can pipe a Partition object to the Partition parameter.
You can pipe a VirtualDisk object to the VirtualDisk parameter.
Ошибка “Windows обнаружила неполадки жесткого диска”
Статус Predictive Failure говорит о том, что одна из характеристик диска (например, механический износ) не соответствует эталонным значениям и велика вероятность отказа этого диска в будущем.
В этом случае рекомендуется выполнить резервное копирование данных с этого диска на отдельный носитель. Затем выполните проверку диска с помощью штатной SMART утилиты от производителя (или универсальными утилитами типа CrystalDiskInfo), проверьте носитель с помощью chkdsk.
Чаще всего для получения информации о состоянии дисков в Windows используют сторонни программы (например, CrystalDiskInfo, HDTune и т.д.). Такие программы, действительно позволяют получить много информации о дисках.
Например, я могу узнать оставшийся ресурс SSD. Текущее значение Total Host Writes – 507 Gb. Производитель гарантирует максимальный ресурс записи (TBW)для этой модели SSD 300 Тб. Значит диск изношен менее чем на 0.2%. Срок использования диска всего 108 часов.
Example 4: Get the iSCSI sessions for all iSCSI disks
This example gets all disks attached via the iSCSI bus by piping the output of Get-Disk to the Where-Object cmdlet, and filtering by the iSCSI value of the Bustype property. It then passes the Disk objects in the pipeline to the Get-IscsiSession cmdlet, which gets the associated iSCSI sessions, and then pipes the output to the Format-Table cmdlet for simplified display.
Вывод списка дисков и разделов на них
Прежде всего попробуйте вывести список дисков, доступных на логическом уровне в вашей системе. Для этого выполните команду:
Get-Disk | ft -AutoSize
Чтобы выбрать только системный диск, на котором установлена Windows, выполните команду:
Get-Disk | Where-Object IsSystem -eq $True | fl
Как вы видите, команда вернула следующие атрибуты системного диска (их также можно использовать в выборке):
Manufacturer : VMware
Model : Virtual disk
SerialNumber :
Size : 80 GB
AllocatedSize : 85898297344
LogicalSectorSize : 512
PhysicalSectorSize : 512
NumberOfPartitions : 2
PartitionStyle : MBR
IsReadOnly : False
IsSystem : True
IsBoot : True
Можно вывести только диски со статусом Offline:
Get-Disk | Where-Object IsOffline –Eq $True| ft –AutoSize
Если вам нужна информация о физических дисках (характеристики и состояние физических дисков на компьютере), используйте командлет Get-PhysicalDisk (ранее мы показывали как с помощью командлета Get-PhysicalDisk можно определить неисправный диск в Storage Spaces Direct и его использование при настройке отказоустойчивого хранилища S2D).
С помощью PowerShell вы можете определить тип подключенного накопителя SSD или HDD (обычно подключен через шину SATA) или USB флешка (тип UnSpecified).
0 TOSHIBA MK3775VSXP HDD SATA 500156374016
1 Samsung SSD 840 PRO Series SSD SATA 128060514304
Вы можете вывести список разделов на всех дисках:
Либо разделы только на указанных дисках:
Get-Partition –DiskNumber 1,2
Чтобы вывести список всех логических разделов в Windows выполните:
Description
The Get-Disk cmdlet gets one or more Disk objects visible to the operating system, or optionally a filtered list.
Outputs
The Get-PhysicalDisk cmdlet returns objects that represent physical disks.
10.01.2019
itpro
PowerShell, Windows 10, Windows Server 2016
Комментариев пока нет
В этой статье мы рассмотрим процесс управления дисками, разделами и томами из командной строки PowerShell. Все операции по работе с локальными дисками и разделами, которые вы привыкли выполнять с помощью графической консоли «Управление дисками» (diskmgmt.msc) или из командной строки утилиты diskpart.exe, вы можете выполнить из PowerShell. Командлеты управления дисками включены в модуль Storage, доступный в PowerShell 3.0. Мы посмотрим как инициализировать диск, создать на нем таблицу разделов, раздел и отформатировать его. Рассмотренные ниже команды будут работать в Windows 10 / Server 2016 и Windows 8.1/ Server 2012 R2 (в предыдущих версиях Windows придется сначала обновить PowerShell).
В Windows 10 в модуле Storage доступно 160 команд. Чтобы вывести все доступные команды управления дисками, выполните:
Get-Command -Module Storage
Важно. При работе с дисками и разделами на них из PowerShell нужно быть внимательным, чтобы случайно не удалить или отформатировать раздел с данными.
Examples
Получение SMART параметров жесткого диска через WMI класс
В Windows вы можете получить доступ к данным SMART дисков с помощью встроенных средств.
Информацию о состоянии дисков компьютера можно посмотреть через панель управления Control Panel\System and Security\Security and Maintenance (в этом же разделе есть информацию о состоянии службы Windows Error Reporting).
В моем случае с дисками все ОК, т.к. в разделе Drive Status указано: OK, All drives are working properly .
Как мы уже говорили выше, Windows собирает информацию SMART с дисков и позволяет получать к ней доступ через WMI.
Откройте командную строку с правами администратора и выполните следующую команду чтобы получить состояние всех дисков:
wmic diskdrive get status
В данном случае с дисками все хорошо. Если нет – будет статус bad, unknown или caution.
Получить информацию о вероятном отказе жесткого диска можно через WMI класс MSStorageDriver_FailurePredictStatus:
wmic /namespace:\\root\wmi path MSStorageDriver_FailurePredictStatus
Если контроллер диска не видит проблем с диском, значение PredictFailure должно быть равно FALSE.
Этот же класс можно опросить с помощью PowerShell:
Get-WmiObject -namespace root\wmi –class MSStorageDriver_FailurePredictStatus
Значения некоторых счетчиков надежности дисков можно получить с помощью следующего кода PowerShell:
Можно вывести информацию только об определенных характеристиках:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object -Property DeviceID, Wear, ReadErrorsTotal, ReadErrorsCorrected, WriteErrorsTotal, WriteErrorsUncorrected, Temperature, TemperatureMax | FT
Также можно вывести общую информацию о дисках через Get-PhysicalDisk:
$(Get-PhysicalDisk | Select *)[0]
Ранее мы показывали как с помощью Get-PhysicalDisk получить информацию о неисправном диске в Windows Server S2D и заменить его:
С помощью данных WMI классов и командлетов PowerShell можно настроить сбор данных о состоянии дисков на компьютерах пользователей для проактивного мониторинга. Можно создать алерты для вашей системы мониторинга (например, zabbix, nagios, icinga и т.д.), compliance отчет SCCM через Configuration Baseline для или PowerShell Desired State Configuration (DSC), опрашивать состояние SMART на удаленных компьютерах скриптом через PowerShell Remoting (командлет Invoke-Command) или использовать что-то свое.
Gets one or more disks visible to the operating system.
This cmdlet returns physical disk objects like basic disks and partitioned drive partitions. Dynamic disks can span multiple pieces of physical media, so they will not be returned by Get-Disk. For more information, see Basic and Dynamic Disks.
PowerShell: проверка свободного места на диске через WMI класс
Вы можете получить информацию о логических дисках в Windows с помощью WMI класса Win32_logicalDisk.
Следующая команда выведет всю информацию о логических дисках компьютера:
Get-WmiObject -Class Win32_LogicalDisk
В свойстве FreeSpace содержится оставшееся место на каждом диске в байтах. Для удобства можно преобразовать его в GB, а также вывести % места, свободного на каждом из логических дисков (как отношение freespace к общему размеру диска) . Можно использовать такой PowerShell скрипт:
Скрипт вывел список логических дисков, их размер, и процент оставшегося свободного места.
Для использования этого скрипта в PowerShell Core, просто замените Get-WmiObject на Get-CimInstance .
В данном скрипте заданы пороговые значения свободного места на диске — 3 и 6%. Если на любом из дисков процент оставшегося свободного места меньше чем эти значения, то выводится модальное информационное окно (можно сделать всплывающие уведомление или сразу вызывать утилиту очистки диска).
В этом примере вам придется вводить имя и пароль пользователя для аутентфикации на SMTP сервере вручную. Чтобы отправлять письма без ручного ввода пароля, вы можете в настройках SMTP сервера разрешить подключение с определенных хостов без аутентфикации. Либо можно настроить SMTP аутентфикацию с помощью сохраненных паролей в файле (к сожалению, не получится настроить управляемые сервисные записи MSA/gMSA для аутентфикации на почтовом сервере).
Данный PowerShell скрипт можно запускать регулярно через задание планировщика или оформить в виде службы Windows. Если на данном хосте Windows недостаточно свободного места, администратор получит уведомление.
Parameters
Runs the cmdlet as a background job. Use this parameter to run commands that take a long time to complete.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.
Type: | CimSession [ ] |
Aliases: | Session |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Gets the disk with the specified friendly name. Enter a friendly name, or use wildcard characters to enter a name pattern.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Accepts an iSCSIConnection object as input. The iSCSI Connection CIM object is exposed by the Get-IscsiConnection cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Accepts an iSCSISession object as input. The iSCSI Session CIM object is exposed by the Get-IscsiSession cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the disk number for which to get the associated Disk object.
Type: | UInt32 [ ] |
Aliases: | DeviceId |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Accepts a Partition object as input. The Partition CIM object is exposed by the Get-Partition cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Contains valid path information.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies an array of serial numbers associated with disks that this cmdlet gets.
Type: | String [ ] |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a storage job object that is associated with disks that this cmdlet gets. To obtain a storage job, use the Get-StorageJob cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the storage subsystem from which this cmdlet gets disks. To obtain a StorageSubsystem object, use the Get-StorageSubSystem cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies the maximum number of concurrent operations that can be established to run the cmdlet. If this parameter is omitted or a value of 0 is entered, then Windows PowerShell® calculates an optimum throttle limit for the cmdlet based on the number of CIM cmdlets that are running on the computer. The throttle limit applies only to the current cmdlet, not to the session or to the computer.
Type: | Int32 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Gets only the disks with the specified IDs. Type one or more IDs (separated by commas).
Type: | String [ ] |
Aliases: | Id |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Accepts a VirtualDisk object as input. The Virtual Disk CIM object is exposed by the Get-VirtualDisk cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Example 1: Get all disks
This example gets all disks visible to the operating system.
Inputs
You can use the pipeline operator to pass an MSFT_StoragePool object to the StoragePool parameter.
You can use the pipeline operator to pass an MSFT_StorageSubsystem object to the StorageSubsystem parameter.
You can use the pipeline operator to pass an MSFT_VirtualDisk object to the VirtualDisk parameter.
Parameters
Gets physical disks that are available for use in a storage pool.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Runs the cmdlet in a remote session or on a remote computer. Enter a computer name or a session object, such as the output of a New-CimSession or Get-CimSession cmdlet. The default is the current session on the local computer.
Type: | CimSession |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Gets the physical disks that contain the specified description. Enter a description or use wildcard characters to enter a description pattern.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Gets the physical disk with the specified friendly name. Enter a friendly name or use wildcard characters to enter a name pattern.
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates whether the cmdlet gets a list of physical disks that host the extents of the virtual disk that you specify by using the VirtualDisk parameter.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the input object that is used in a pipeline command.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Gets the physical disks with the specified manufacturer. Enter a manufacturer string or use wildcard characters to enter a pattern.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Gets the physical disks of the specified model. Enter a model string or use wildcard characters to enter a pattern.
Type: | String |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indicates that this cmdlet gets physical disks that contain the last remaining copy of the data of a virtual disk.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the ID of the physical disk to get.
Type: | String |
Aliases: | PhysicalDiskObjectId |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Indicates that this cmdlet gets physical disks that are physically connected to the specified storage node.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indicates whether the cmdlet gets a list of physical disks to host the extents that belong to the virtual disk specified by the VirtualDisk parameter. Specify the physical disks to host the extents of a virtual disk by using the PhysicalDisksToUse parameter of the New-VirtualDisk cmdlet.
Type: | Boolean |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies the serial number of the physical disk to get.
Type: | String |
Position: | 1 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies a storage enclosure associated with the physical disk that this cmdlet gets. To obtain a StorageEnclosure object, use the Get-StorageEnclosure cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies a storage node as a CimInstance object. The cmdlet gets the physical disk connected to the node that you specify. To obtain a storage node object, use the Get-StorageNode cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Accepts a StoragePool object as input and gets the physical disks that belong to the pool. The Storage Pool CIM object is exposed by the Get-StoragePool cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Specifies a storage subsystem. This cmdlet gets physical disks attached to the storage subsystem that you specify. To obtain a StorageSubsystem object, use the Get-StorageSubSystem cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Gets only the physical disks with the specified IDs. Type one or more IDs (separated by commas), or use wildcard characters to enter a pattern.
Type: | String |
Aliases: | Id |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
- AutoSelect
- HotSpare
- Journal
- ManualSelect
- Retired
- Unknown
Accepts a VirtualDisk object as input and gets the physical disks used by the virtual disk. The VirtualDisk object is exposed by the Get-VirtualDisk cmdlet.
Type: | CimInstance |
Position: | Named |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
This parameter is reserved for future use.
Type: | UInt64 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
This parameter is reserved for future use.
Type: | UInt64 |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Удаление разделов на диске
Чтобы удалить все разделы на дисках 1 и 2 без подтверждения, выполните команду:
Get-Partition –DiskNumber 1,2 | Remove-Partition -Confirm:$false
Для удаления с дисков всех разделов и полной очистки данных выполните команду:
Clear-Disk -Number 1 -RemoveData -Confirm:$false
Если на диски имеются OEM разделы (OEM раздел восстановления, EFI раздел , System Reserved) для их удаления нужно исползовать параметр RemoveOEM:
Clear-Disk -Number 1 -RemoveData –RemoveOEM
Следующая однострочная PowerShell команда инициализирует все новые подключенные диски типа RAW, создаст на них таблицу разделов и создаст раздел с файловой системой NTFS максимального размера. Ее удобно использовать при подключении нового диска:
Get-Disk |Where-Object PartitionStyle -eq 'RAW' |Initialize-Disk -PartitionStyle MBR -PassThru |New-Partition -AssignDriveLetter -UseMaximumSize |Format-Volume -FileSystem NTFS -Confirm:$false
28.05.2021
itpro
PowerShell, Windows 10, Windows Server 2016
комментария 4
Проверка свободного места на удаленных компьютерах Windows с помощью PowerShell
Для запуска PS скрипта проверки оставшегося свободного места на удаленном компьютере можно использовать WinRM командлет Invoke-Command.
Invoke-Command -ComputerName dc01,dc02,dc03 -FilePath "C:\PS\check-free-disk-space.ps1"
Если сервера, на которых нужно проверить оставшееся свободное место состоят в домене, можно получить их список из Active Directory с помощью командлета Get-ADComputer и запустить скрипт проверки для каждого из них:
$computers = (Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"').Name
Invoke-Command -ComputerName $computers -FilePath "C:\PS\check-free-disk-space.ps1" -ErrorAction SilentlyContinue
Также для получения WMI данных с удаленных компьютеров можно использовать RemoteWMI:
Get-WmiObject -Class Win32_logicalDisk -ComputerName dc01,dc02
Данная инструкция описывает простейшую самодельную систему мониторинга места на дисках, которую можно использовать для решения частных задач. Если у вас множество хостов, состояние которых нужно отслеживать, то конечно лучше использовать полноценную систему мониторинга (например, Zabbix, PRTG, Nagion, Icinga и т.д.).
26.05.2021
itpro
PowerShell, Windows 10, Windows Server 2016
комментариев 7
Современные версии Windows собирают информацию о состоянии жестких дисках компьютера через SMART и могут оповестить пользователя о наличии проблем. Рассмотрим, как выглядит уведомление Windows о физических проблемах с жестким диском и как с помощью PowerShell и командной строки получить SMART информацию о здоровье ваших дисков через встроенные WMI классы.
Большинство современных жестких дисков (в том числе HDD, SSD, NVMe SSD) поддерживает технологию базового самотестирования и анализа состояния S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology). Контроллер диска оценивает состояние физических характеристик диска, и Windows может получить доступ к этим данным через WMI.
Информация SMART доступна только для локальных физических дисков (ATA /SATA устройств). Внешние LUN, подключенных через Fiber Channel, iSCSI, RAID или сетевые диски в основном не сообщают статус SMART.
Инициализация диска
В предыдущем примере вы видели, что один из дисков находится в офлайн состоянии и имеет разметку RAW в поле Partition Style. Попробуем инициализировать его, создать таблицу разделов и создать на нем новый раздел.
Прежде всего нужно перевести такой диск в онлайн:
Get-Disk | Where-Object IsOffline –Eq $True | Set-Disk –IsOffline $False
Теперь можно инициализировать этот диск (его индекс 1):
Initialize-Disk -Number 1
По умолчанию на диске создается таблица разделов GPT (GUID), если вам нужна именно MBR, выполните команду:
Initialize-Disk 1 –PartitionStyle MBR
Если на диске уже имеются данные, вы можете изменить таблицу разделов с MBR в GPT без удаления данных с помощью утилиты mbr2gpt.exe.
Чтобы не указывать номер диска, можно инициализировать все диски с таблицей разделов RAW:
Get-Disk | Where-Object PartitionStyle –Eq 'RAW' | Initialize-Disk
Обратите внимание, что диск может находится в статусе RAW при повреждении таблицы разделов. Вы можете попробовать восстановить таблицу разделов и данные на RAW диске так.
Example 1: Getting all physical disks
This example returns an array of all PhysicalDisk objects present in the computer. A storage management provider is required to manage physical disks.
Example 2: Getting all physical disks eligible for adding to a storage pool
This example returns an array of PhysicalDisk objects that are available for adding to a storage pool (they are in a primordial pool).
Читайте также: