Загрузка данных


# Скрипт: 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
}