Загрузка данных
# Скрипт: CreateAndCheckDisk.ps1
# Создаёт том NTFS с буквой T: на выбранном диске, проверяет его и выводит сведения
# Запрос прав администратора (требуется для работы с дисками)
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "Ошибка: Запустите PowerShell от имени администратора!" -ForegroundColor Red
exit 1
}
# === a. Вывод перечня дисков ===
Write-Host "`n=== Доступные физические диски ===" -ForegroundColor Cyan
$disks = Get-PhysicalDisk | Select-Object DeviceId, FriendlyName, MediaType, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, OperationalStatus
$disks | Format-Table -AutoSize
# === b. Запрос номера диска ===
do {
Write-Host "`nВНИМАНИЕ: Буква T: будет создана на выбранном диске. Все данные на нём будут удалены!" -ForegroundColor Yellow
$diskNumber = Read-Host "Введите номер диска (DeviceId) для создания тома T:"
# Проверка существования диска
$selectedDisk = Get-PhysicalDisk -DeviceId $diskNumber -ErrorAction SilentlyContinue
if (-not $selectedDisk) {
Write-Host "Диск с номером $diskNumber не найден. Попробуйте снова." -ForegroundColor Red
}
} while (-not $selectedDisk)
# === c. Предупреждение ===
Write-Host "`n⚠️ ПРЕДУПРЕЖДЕНИЕ ⚠️" -ForegroundColor Red
Write-Host "Диск $diskNumber ($($selectedDisk.FriendlyName)) будет ПОЛНОСТЬЮ ОЧИЩЕН!" -ForegroundColor Red
Write-Host "Все данные на этом диске будут безвозвратно утеряны!" -ForegroundColor Red
# === d. Подтверждение пользователя ===
$confirmation = Read-Host "`nВы уверены, что хотите продолжить? (Y/N)"
if ($confirmation -ne 'Y' -and $confirmation -ne 'y') {
Write-Host "Операция отменена пользователем. Завершение работы." -ForegroundColor Yellow
exit 0
}
Write-Host "`nПродолжение операции..." -ForegroundColor Green
# === e. Создание тома NTFS с буквой T: ===
try {
# 1. Очистка диска (удаление всех разделов)
Write-Host "Очистка диска $diskNumber..." -ForegroundColor Yellow
Clear-Disk -Number $diskNumber -RemoveData -RemoveOEM -Confirm:$false -ErrorAction Stop
# 2. Перевод диска в онлайн и инициализация (GPT или MBR)
Set-Disk -Number $diskNumber -IsOffline $false
Set-Disk -Number $diskNumber -IsReadOnly $false
Initialize-Disk -Number $diskNumber -PartitionStyle GPT -Confirm:$false -ErrorAction Stop
# 3. Создание раздела на весь диск
$partition = New-Partition -DiskNumber $diskNumber -UseMaximumSize -DriveLetter T -ErrorAction Stop
# 4. Форматирование в NTFS
Write-Host "Форматирование диска в NTFS (буква T:)..." -ForegroundColor Yellow
Format-Volume -DriveLetter T -FileSystem NTFS -NewFileSystemLabel "DataDisk" -Confirm:$false -ErrorAction Stop
Write-Host "Том T: успешно создан!" -ForegroundColor Green
# Небольшая пауза для синхронизации
Start-Sleep -Seconds 2
} catch {
Write-Host "Ошибка при создании тома: $_" -ForegroundColor Red
exit 1
}
# === f. Проверка диска T: на наличие ошибок ===
Write-Host "`n=== Проверка диска T: на ошибки ===" -ForegroundColor Cyan
# Запуск chkdsk (только чтение, без исправления)
$checkResult = chkdsk T: 2>&1
# Вывод результатов
Write-Host "Результаты проверки диска T::" -ForegroundColor Yellow
$checkResult | ForEach-Object { Write-Host $_ }
# Анализ результатов
if ($checkResult -match "не обнаружено проблем" -or $checkResult -match "no problems") {
Write-Host "`n✅ Проверка завершена: ошибки не обнаружены." -ForegroundColor Green
} elseif ($checkResult -match "обнаружены ошибки" -or $checkResult -match "problems found") {
Write-Host "`n⚠️ На диске обнаружены ошибки! Рекомендуется запустить chkdsk T: /F" -ForegroundColor Red
} else {
Write-Host "`nНе удалось однозначно определить результат проверки." -ForegroundColor Yellow
}
# === g. Вывод сведений о томе ===
Write-Host "`n=== Сведения о томе T: ===" -ForegroundColor Cyan
# Через Get-Volume (более подробно)
$volume = Get-Volume -DriveLetter T
if ($volume) {
Write-Host "Буква диска: $($volume.DriveLetter):"
Write-Host "Метка тома: $($volume.FileSystemLabel)"
Write-Host "Файловая система: $($volume.FileSystem)"
Write-Host "Размер тома: $([math]::Round($volume.Size/1GB,2)) GB"
Write-Host "Свободно: $([math]::Round($volume.SizeRemaining/1GB,2)) GB"
Write-Host "Занято: $([math]::Round(($volume.Size - $volume.SizeRemaining)/1GB,2)) GB"
Write-Host "Тип носителя: $($volume.MediaType)"
Write-Host "Состояние: $($volume.HealthStatus)"
} else {
Write-Host "Том T: не найден!" -ForegroundColor Red
}
# Дополнительная информация через Get-PSDrive
$psDrive = Get-PSDrive -Name T -ErrorAction SilentlyContinue
if ($psDrive) {
Write-Host "`nДополнительно:" -ForegroundColor Cyan
Write-Host "Корень: $($psDrive.Root)"
Write-Host "Провайдер: $($psDrive.Provider)"
}
Write-Host "`nСкрипт успешно завершён." -ForegroundColor Green