Удалить все тома со всех подключенных дисков - Diskpart

1735
Bilfred

Как я могу удалить все тома с жестких дисков в среде WinPE, используя Diskpart с помощью вызовов Powershell или WMIC? В образ WinPE будут заранее добавлены необходимые пакеты с использованием DISM, и я не хочу очищать USB-диски или любое внешне подключенное хранилище, включая ссылки iSCSI

Имейте в виду, что это будет использоваться как часть среды развертывания, в которой система очищается перед применением образа. Предполагается, что среда развертывания будет полностью оставлена ​​без внимания, поэтому чем меньше будет летать вниз экрана, тем лучше.

0
Итак, вы хотите отформатировать все физические диски на компьютере? Включает ли это подключенные USB-диски? Kinnectus 8 лет назад 0
В последний раз я проверял, DISKPART - это команда Windows, и она не существует в MS-DOS? grawity 8 лет назад 1
@ BigChris это не включает USB-диски, я обновлю это сейчас Bilfred 8 лет назад 0
Вы также можете обновить свой вопрос о том, какую технологию вы бы предпочли использовать ... DISKPART не может работать под MS-DOS ... Kinnectus 8 лет назад 0
Я не имею в виду запуск его через MS-DOS? Bilfred 8 лет назад 0
В заголовке вашего вопроса изначально стояла надпись «MS-DOS», поэтому и благодарность так же прокомментировала :). Вы можете написать сценарий, который вы поместите на диск WinPE для WMIC или PowerShell локального компьютера, и определить локальные физические диски. затем вы можете использовать этот вывод для создания скрипта DISKPART для форматирования дисков. Единственное предостережение для WinPE в том, что он не поддерживает WMIC или PowerShell по умолчанию. Вы можете добавить поддержку, и повсюду есть учебники для достижения этого - это довольно просто! Kinnectus 8 лет назад 1
да, я видел это, но забыл отредактировать свой комментарий :) Я мог бы включать пакеты через DISM и ссылаться через powershell, делая вывод в пользовательский пакетный файл, из которого powershell затем вызывает после поиска локальных дисков? Bilfred 8 лет назад 0

2 ответа на вопрос

3
Michael B

To do the same through powershell you can use

Use with extreme caution, this script will delete hard drives!

(Get-Disk).where({$_.BusType -like "ATA"}) | Clear-Disk -Confirm -Whatif -RemoveData -RemoveOEM 

(I've put -Confirm -Whatif to be removed, so people can't randomly delete their entire comp! - remove it to delete your entire comp)

Obviously you need to make the "ATA" part whatever you need it to be, and you may need a confirm flag for the Clear-Disk (I didn't have a spare disk to test it on!)

You can use

get-disk | fl * 

To get a list of all of the disks attached with all of the variables you can use to filter on.

-1
Michael B

(Отвечая на предварительно отредактированный вопрос, когда он спросил о том, как это сделать через командную строку / diskpart)

select disk 0 clean select disk 1 clean ... 

Это удалит все разделы с дисков и вернет их к необработанным устройствам.

Если вы выберете больше дисков, чем знаете, у вас будет просто ошибка на несуществующих.

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

select disk x disk detail  

чтобы проверить, является ли это диск Ата и т. д., затем вы можете запустить команду очистки, если это подходит

Это очевидный метод, но он будет содержать достаточное количество ненужного кода, так как иногда я ожидаю обновить машины до 12 и более физических дисков. Если бы я ожидал использовать только несколько дисков, я мог бы подумать об этом, и это также выглядит очень уродливо, когда по экрану летит огромная линия ошибок, особенно для ничего не подозревающих пользователей - это, в конце концов, автоматическое развертывание. Вот почему я смотрю вниз по пути использования Powershell и WMIC. Я, вероятно, должен обновить вопрос с этим тоже. Спасибо, что хотя бы ответил. Bilfred 8 лет назад 0
Кроме того, используя PowerShell, у меня будет ссылка для возврата, поэтому я знаю, сколько дисков нужно даже отформатировать / переформатировать / образ / смонтировать и т. Д. Bilfred 8 лет назад 0
Я отвечал на вопрос перед изменением командной строки / diskpart;) и, как и в случае с любым языком сценариев, можно полностью скрыть сообщения об ошибках или полностью удалить их, проверив, какие диски существуют, но для этого требуется более элегантный сценарий. Michael B 8 лет назад 1
Верно, и если я не получу никаких твердых ответов в течение следующих нескольких дней, я, вероятно, просто воспользуюсь этим методом. Я не сильно удивлен в Powershell, но я пытаюсь триангулировать некоторые поиски в Google. Bilfred 8 лет назад 0