ป้ายกำกับ: PowerShell

restore drivers โดย PowerShellrestore drivers โดย PowerShell

หลังจาก backup drivers โดย PowerShell มาแล้ว ที่นี้หลังจากลง windows ใหม่เสร็จแล้วเราก็จะเอา driver เดิมที่ backup ไว้กลับมา
drivers_restore_utility.ps1

<#
.SYNOPSIS
 Interactive Windows Drivers Restore Utility (USB Ready)
 Author: pitt.plusmagi.com (pitt.plusmagi.com)
#>

if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
 Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs
 exit
}

$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Definition
$usbBackupPath = Join-Path -Path $scriptPath -ChildPath "Drivers_Backup"
$cBackupPath = "C:\portables\Drivers_Backup"

Clear-Host
$title = @"
====================================================
  POWERSHELL DRIVERS RESTORE UTILITY
  Author: pitt.plusmagi.com (pitt.plusmagi.com)
====================================================
"@
Write-Host $title -ForegroundColor Cyan

Write-Host "Select Source Path:" -ForegroundColor White
Write-Host "[1] USB Drive : $usbBackupPath"
Write-Host "[2] System C: : $cBackupPath"
$choice = Read-Host "`nSelect [1] or [2] (Default is 1)"

$sourcePath = if ($choice -eq "2") { $cBackupPath } else { $usbBackupPath }

if (-not (Test-Path $sourcePath)) { Write-Host "Error: Path not found!" -ForegroundColor Red; pause; exit }

# --- ส่วนเมนู Interactive (เหมือนเดิม) ---
$categories = Get-ChildItem -Path $sourcePath -Directory | Select-Object -ExpandProperty Name
$selection = New-Object System.Collections.Generic.List[bool]
$categories | ForEach-Object { $selection.Add($false) }
$index = 0
$running = $true

while ($running) {
 Clear-Host
 Write-Host $titleText -ForegroundColor Cyan
 Write-Host " Source: $sourcePath" -ForegroundColor Yellow
 Write-Host " [UP/DOWN] Navigate [ENTER] Toggle [A] All [C] Clear [S] Start [Q] Quit`n"
 for ($i = 0; $i -lt $categories.Count; $i++) {
  $char = if ($selection[$i]) { "y" } else { " " }
  $prefix = if ($i -eq $index) { " > " } else { " " }
  if ($i -eq $index) { Write-Host "$prefix[$char] $($categories[$i])" -ForegroundColor Yellow -BackgroundColor DarkCyan }
  else { Write-Host "$prefix[$char] $($categories[$i])" }
 }
 $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
 switch ($key.VirtualKeyCode) {
  38 { $index = if ($index -gt 0) { $index - 1 } else { $categories.Count - 1 } }
  40 { $index = if ($index -lt $categories.Count - 1) { $index + 1 } else { 0 } }
  13 { $selection[$index] = -not $selection[$index] }
  65 { for($i=0; $i -lt $selection.Count; $i++) { $selection[$i] = $true } }
  67 { for($i=0; $i -lt $selection.Count; $i++) { $selection[$i] = $false } }
  83 { $running = $false }
  81 { exit }
 }
}

$selectedCategories = for ($i = 0; $i -lt $categories.Count; $i++) { if ($selection[$i]) { $categories[$i] } }
foreach ($catName in $selectedCategories) {
 Write-Host "`nInstalling: [$catName]" -ForegroundColor Cyan
 pnputil.exe /add-driver "$(Join-Path $sourcePath $catName)\*.inf" /subdirs /install
}
Write-Host "`nRestore Completed!" -ForegroundColor Green
pause

  1. สร้างไฟล์ drivers_restore_utility.ps1 โดยใช้ notepad แล้ว save as เป็น drivers_restore_utility.ps1 บน Desktop หรือจะใส่ใน USB เลยก็ได้
  2. ใส่เนื้อหาตามข้างบน
  3. ไปที่เมนูของ windows
  4. ช่องค้นหา พิมพ์ powershell
  5. พิมพ์ cd ตามด้วย folder ที่ save drivers_restore_utility.ps1 ไว้อย่าง
    cd /d %USERPROFILE%/Desktop
  6. ใช้โดยพิมพ์ ./drivers_restore_utility.ps1
  7. ทำตามขั้นตอนไปเรื่อย ๆ

อ่านเพิ่มเติม