# Скрипт: Clear-NewDisk.ps1
# Очищает выбранный диск (удаляет все разделы и данные)
# Запрос прав администратора
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "Запустите PowerShell от имени администратора!" -ForegroundColor Red
exit 1
}
# Получение списка дисков
$disks = Get-Disk | Where-Object {$_.OperationalStatus -eq 'Online' -or $_.OperationalStatus -eq 'Offline'}
Write-Host "`n=== Доступные диски ===" -ForegroundColor Cyan
$disks | Format-Table -AutoSize -Property Number, FriendlyName, Size, PartitionStyle, OperationalStatus
# Выбор диска
do {
$diskNumber = Read-Host "Введите номер диска для очистки"
$selectedDisk = Get-Disk -Number $diskNumber -ErrorAction SilentlyContinue
if (-not $selectedDisk) {
Write-Host "Диск с номером $diskNumber не найден. Попробуйте снова." -ForegroundColor Red
}
} while (-not $selectedDisk)
# Предупреждение
Write-Host "`nВНИМАНИЕ! Диск $diskNumber ($($selectedDisk.FriendlyName)) будет ПОЛНОСТЬЮ ОЧИЩЕН!" -ForegroundColor Red
$confirm = Read-Host "Введите 'ОЧИСТИТЬ' для подтверждения"
if ($confirm -ne "ОЧИСТИТЬ") {
Write-Host "Операция отменена." -ForegroundColor Yellow
exit
}
# Выбор типа очистки
Write-Host "`nВыберите тип очистки:" -ForegroundColor Cyan
Write-Host "1. Быстрая очистка (только удаление разделов, быстро)"
Write-Host "2. Полная очистка (запись нулями, безопасно, но долго)"
$cleanType = Read-Host "Ваш выбор (1 или 2)"
try {
# Переводим диск в режим offline для очистки
if ($selectedDisk.OperationalStatus -eq 'Offline') {
Set-Disk -Number $diskNumber -IsOffline $false
Start-Sleep -Seconds 1
}
# Сброс атрибутов только для чтения
Set-Disk -Number $diskNumber -IsReadOnly $false
# Очистка
switch ($cleanType) {
"1" {
Write-Host "Быстрая очистка: удаление разделов..." -ForegroundColor Yellow
Clear-Disk -Number $diskNumber -RemoveData -RemoveOEM -Confirm:$false
Write-Host "Быстрая очистка завершена. Диск теперь не инициализирован." -ForegroundColor Green
}
"2" {
Write-Host "Полная очистка: запись нулями... Это может занять много времени!" -ForegroundColor Yellow
# Метод через diskpart для полной очистки (более надёжно)
$diskpartScript = @"
select disk $diskNumber
clean all
"@
$diskpartScript | diskpart
Write-Host "Полная очистка завершена." -ForegroundColor Green
}
default {
Write-Host "Неверный выбор. Операция отменена." -ForegroundColor Red
exit
}
}
# Приведение диска в исходное состояние (Offline после очистки)
Set-Disk -Number $diskNumber -IsOffline $true
Write-Host "`nДиск $diskNumber полностью очищен и переведён в состояние Offline." -ForegroundColor Green
Write-Host "Для использования диска его нужно инициализировать и создать разделы через 'Управление дисками' или Diskpart." -ForegroundColor Cyan
} catch {
Write-Host "Ошибка при очистке диска: $_" -ForegroundColor Red
}