ค้นหาเว็บไซต์

คำสั่ง PowerShell 5 คำสั่งที่แก้ไขปัญหา Windows ส่วนใหญ่ของฉัน


ตัวหารร่วมทั่วไปของการใช้คอมพิวเตอร์คือคุณจะพบปัญหาที่ต้องการการแก้ไขปัญหา หลังจากใช้ Windows มานานหลายปี ฉันสังเกตว่า คำสั่ง PowerShell บางคำสั่งเป็นประโยชน์ที่สุดในการแก้ไขปัญหาทั่วไป ตั้งแต่การแก้ไขการเริ่มต้นช้าที่ช้าและการเชื่อมต่อเครือข่ายที่ไม่ดี ไปจนถึงการจัดการแอปที่ดื้อรั้น คำสั่งเหล่านี้คือทางเลือกที่ดีที่สุดของคุณ

ซ่อม Windows ก่อนที่มันจะแย่ลง

รัน SFC และ DISM ตามลำดับที่ถูกต้อง






คำสั่ง DISM ใช้ซ่อมแซม Windows Component Store (WinSxS) การรันคำสั่ง DISM โดยค่าเริ่มต้นต้องการการเชื่อมต่ออินเทอร์เน็ตเนื่องจากมันเชื่อมต่อกับ Windows Update เพื่อดาวน์โหลดไฟล์ทดแทนที่จำเป็น อย่างไรก็ตาม คุณสามารถเพิ่มแฟล็ก /Source เพื่อชี้ไปยังไฟล์ ISO หรือ WIM ที่ติดตั้งอยู่ในเครื่อง การใช้แฟล็ก /LimitAccess ร่วมด้วยจะป้องกันไม่ให้ DISM พยายามเข้าถึง Windows Update หากแหล่งที่มาในเครื่องไม่สมบูรณ์

ในทางกลับกัน คำสั่ง SFC ทำให้ Windows แทนที่ไฟล์ที่เสียหายด้วยเวอร์ชันที่เก็บในแคชที่ถูกต้อง หลังจากสแกนด้วย SFC คอมพิวเตอร์ควรรายงานว่าพบและแก้ไขข้อผิดพลาดแล้ว อย่างไรก็ตาม หากมีข้อผิดพลาดบางอย่างที่ไม่สามารถแก้ไขได้ ให้ตรวจสอบไฟล์ CBS.log ที่ C:\Windows\Logs\CBS\CBS.log

ฉันรันคำสั่งสองคำสั่งนี้เมื่อฉันเห็นสัญญาณใด ๆ ของความเสียหายต่อไฟล์ระบบ Windows และคลังส่วนประกอบ สัญญาณเหล่านี้อาจเป็น:

  • ระบบค้าง แครช หรือหน้าจอสีน้ำเงินแห่งความตาย (BSOD)
  • คุณสมบัติหรือแอปพลิเคชันของ Windows ใช้งานได้ไม่ถูกต้อง
  • ระบบช้าลงอย่างมีนัยสำคัญและฉับพลัน

หาก BSOD เกี่ยวข้องกับฮาร์ดแวร์ ทั้งสองคำสั่งจะไม่มีประสิทธิภาพในการแก้ไขมัน

นี่คือคำสั่ง PowerShell ที่ฉันรันโดยมีสิทธิ์ผู้ดูแลระบบ:

DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow

โดยเลือกได้ ผมรันคำสั่งด้านล่างเพื่อสร้างไฟล์ข้อความที่อ่านได้ของบันทึกการติดตามการอัปเดตของ Windows สำหรับการตรวจสอบวินิจฉัย:

Get-WindowsUpdateLog

หลักปฏิบัติทั่วไปคือให้รัน DISM ก่อน SFC แล้วจึงรีสตาร์ทคอมพิวเตอร์ของคุณ ซึ่งจะช่วยให้คุณมีโอกาสดีที่สุดในการซ่อมแซมที่ประสบผลสำเร็จ ลึกซึ้ง และยาวนาน

ค้นหาสิ่งที่จริง ๆ กำลังเต็มพื้นที่ไดรฟ์ของคุณ

เปิดเผยโปรแกรมที่ใช้พื้นที่เก็บข้อมูลมากที่ GUI ซ่อนอยู่

หนึ่งในปัญหาที่พบบ่อยกว่าที่ฉันเจอบน Windows คือแอปหรือส่วนประกอบของระบบที่เขียนข้อมูลลงดิสก์มากกว่าที่คาดไว้ บางครั้งฉันสามารถติดตามสิ่งเหล่านี้ได้โดยใช้ฟีเจอร์ Windows Storage Sense แต่ไม่ใช่ว่าจะเป็นวิธีที่มีประสิทธิภาพที่สุด วิธีที่เชื่อถือได้นั้นต้องเรียกสอบถาม Windows สำหรับไฟล์และโฟลเดอร์ที่ใช้พื้นที่มากที่สุด

สถานการณ์เหล่านี้ใด ๆ อาจต้องใช้การเรียกใช้คำสั่ง PowerShell:

  • ไดรฟ์เต็มเร็วเกินปกติ
  • เวลาการโหลดของแอปพลิเคชันที่เพิ่มขึ้น
  • การดำเนินการไฟล์ช้า
  • คำเตือนพื้นที่ดิสก์ต่ำที่ไม่ทราบสาเหตุ

บล็อกคำสั่งด้านล่างจะสแกนและแสดงโฟลเดอร์ที่ใหญ่ที่สุดสำหรับโปรไฟล์ผู้ใช้ Windows ใด ๆ ที่ระบุ:

$folders = Get-ChildItem -Path $env:USERPROFILE -Directory 
$folderSizes = foreach ($f in $folders) { 
 $totalBytes = (Get-ChildItem $f.FullName -Recurse -File -ErrorAction Ignore | Measure-Object -Property Length -Sum).Sum 
 [PSCustomObject]@{ 
 Path = $f.FullName 
 SizeInGB = [math]::Round(($totalBytes / 1GB), 2) 
 } 
} 
$folderSizes | Sort-Object -Property SizeInGB -Descending

ตามความสมัครใจ ผมรันคำสั่ง PowerShell ด้านล่างเพื่อดูไฟล์เดี่ยวที่มีขนาดใหญ่ที่สุด:

Get-ChildItem $env:USERPROFILE -Recurse -File | Sort-Object Length -Descending | Select-Object -First 5 -Property Name, @{Name='SizeGB';Expression={[math]::Round($_.Length/1GB,2)}}

การเริ่มสแกนจากโฟลเดอร์ผู้ใช้นั้นฉลาด เพราะโดยทั่วไปจะมีไฟล์ขนาดใหญ่ที่สุด และสามารถขยายการสแกนไปยังไดรฟ์อื่นได้ถ้าจำเป็น

รีเซ็ตการเชื่อมต่อเครือข่ายโดยไม่ลบอะแดปเตอร์ของคุณ

ล้าง DNS, Winsock, และ TCP/IP อย่างถูกต้อง

สาเหตุของปัญหาเครือข่ายไม่จำเป็นต้องชัดเจนเสมอไป บางครั้งคุณอาจจำเป็นต้องปรับแต่งเราเตอร์เพื่ออินเทอร์เน็ตที่เสถียรมากขึ้น ในบางครั้ง แอปบางตัวอาจเป็นตัวกระตุ้นให้เกิดปัญหา ในความเป็นจริง ระบบปฏิบัติการเองก็สามารถเป็นสาเหตุได้เช่นกัน การใช้ PowerShell เพื่อรีสตาร์ทอะแดปเตอร์ทั้งหมดของฉันมักเป็นวิธีแก้ปัญหาที่เชื่อถือได้ และมันช่วยฉันไม่ต้องติดตั้งไดรเวอร์ใหม่

คำสั่งเครือข่ายเหล่านี้มักมีประสิทธิภาพในกรณีใด ๆ ดังต่อไปนี้:

  • การหยุดชะงักหรือเปิดหน้าเว็บเพจเพียงบางส่วน
  • การดาวน์โหลดหรืออัปโหลดที่ถูกขัดจังหวะ
  • ข้อผิดพลาด "ไม่มีอินเทอร์เน็ต" เมื่ออุปกรณ์อื่นใช้งานได้ดี

ด้านล่างนี้คือคำสั่งสามคำสั่งที่ฉันใช้เรียงตามลำดับ (พวกมันต้องการสิทธิ์ผู้ดูแลระบบ):

Clear-DnsClientCache
Get-NetAdapter | Where-Object {$_.Status -eq "Up"} | Restart-NetAdapter
Test-NetConnection google.com

ถ้าคุณมีที่อยู่ที่แคชซึ่งล้าหลังหรือเสียหาย คำสั่งแรกสามารถช่วยล้างพวกมันออกจากแคชของตัวแก้ไข DNS ในเครื่องได้ คำสั่งที่สองจะปิดและเปิดการ์ดเครือข่ายทางกายภาพใหม่และหลีกเลี่ยงการตั้งค่าอื่น ๆ และคำสั่งสุดท้ายเป็นเพียงการทดสอบการเชื่อมต่ออย่างง่าย แต่ควรทราบว่าคำสั่งเหล่านี้จะไม่เกิดประสิทธิภาพสำหรับปัญหาในระดับเราเตอร์หรือผู้ให้บริการอินเทอร์เน็ต

สำหรับการรีเซ็ตแบบ GUI ที่เข้มงวดมากขึ้น ให้เปิด การตั้งค่า และไปที่ เครือข่าย & อินเทอร์เน็ต -> การตั้งค่าเครือข่ายขั้นสูง -> รีเซ็ตเครือข่าย

เมื่ออุปกรณ์อื่นออนไลน์ และคำสั่งล่าสุดล้มเหลว โปรดทราบว่าไฟร์วอลล์ นโยบาย DNS หรือโดเมนที่ถูกบล็อกสามารถส่งผลต่อผลลัพธ์ การเรียกใช้คำสั่ง: Test-NetConnection -ComputerName 8.8.8.8 -Port 53 สามารถตัดปัญหาเฉพาะ DNS ออกได้

เลิกเดาว่าทำไมคอมพิวเตอร์ของคุณถึงช้า

จัดลำดับ CPU หน่วยความจำ และผลกระทบต่อการเริ่มต้นทันที

มีบางครั้งที่คอมพิวเตอร์ของคุณทำงานช้าลง หากฉันยังไม่ได้เริ่มงานใด ๆ ที่ทราบว่าอาจทำให้ช้า ฉันจะตรวจสอบกระบวนการที่กำลังทำงานอยู่ พวกมันอาจแสดงสิ่งที่ใช้ CPU, หน่วยความจำ หรือทรัพยากรตอนเริ่มต้น จากตัวจัดการงาน ฉันสามารถรับภาพรวมที่ช่วยให้ฉันดำเนินการอย่างแม่นยำได้ ด้วยเครื่องมือบุคคลที่สามอื่น ๆ เช่น Process Explorer ฉันอาจได้รับข้อมูลที่ละเอียดมากขึ้น

อย่างไรก็ตาม ฉันยังคงใช้ PowerShell สำหรับการดูแบบสดและพกพาได้เมื่อฉันสังเกตเห็นสิ่งใดสิ่งหนึ่งดังต่อไปนี้:

  • แอปพลิเคชันค้างหรือหน่วง
  • กิจกรรมพัดลมสูง
  • การเกิดสัญญาณ CPU กระชากบ่อย
  • เวลาการเริ่มต้น Windows ที่ยาวนานขึ้น

ด้านล่างนี้คือชุดคำสั่งต่างๆ ที่ฉันรัน:

# Top 5 processes by live CPU usage
Get-Counter '\Process(*)\% Processor Time' |
Select-Object -ExpandProperty CounterSamples |
Sort-Object -Property CookedValue -Descending |
Select-Object -First 5 -Property InstanceName,CookedValue

# Top 5 processes by private memory usage
Get-Process | Sort-Object PM -Descending | Select-Object -First 5 ProcessName,PM

# View startup programs
Get-CimInstance Win32_StartupCommand

# View currently running services
Get-Service | Where-Object {$_.Status -eq "Running"}

การรันคำสั่งเหล่านี้ทำให้ฉันเห็นภาพที่ชัดเจนของแอปและกระบวนการต่างๆ และช่วยให้ฉันตัดสินใจได้อย่างมีข้อมูลมากขึ้นเกี่ยวกับวิธีการจัดการกับพวกมัน บางครั้งฉันเลือกที่จะยุติกระบวนการหรือโปรแกรม; บางครั้งฉันปรับการตั้งค่าหรือต้องถอนการติดตั้งแอปในบางกรณีรุนแรง

คุณอาจเห็นรายการเช่น "_total" และ "Idle" ที่ด้านบน; เหล่านี้เป็นสิ่งประดิษฐ์ของเคาน์เตอร์และไม่ใช่กระบวนการจริง

แก้ไขแอปที่เสียและข้อผิดพลาดของเมนูเริ่ม

ลงทะเบียนแพ็กเกจแอปใหม่อย่างปลอดภัย

การอัปเดต Windows ที่มีข้อผิดพลาด ไฟล์ระบบที่เสียหาย และเครื่องมือปรับแต่งของบุคคลที่สาม มักจะทำให้แอป Windows และเมนูเริ่มมีปัญหา การติดตั้งแอปใหม่อาจได้ผล แต่บ่อยครั้งถือว่าเกินความจำเป็น โดยใช้ PowerShell คุณสามารถแก้ปัญหานี้ได้โดยการลงทะเบียนแพ็กเกจแอปใหม่

นี่คือวิธีแก้ปัญหาที่ฉันใช้เป็นหลักในสถานการณ์ดังต่อไปนี้:

  • เมนูเริ่มต้นเปิดไม่ได้
  • เมนูเริ่มตอบสนองช้า
  • แอป Microsoft Store จะไม่เปิดหรืออัปเดต

ด้านล่างนี้คือบล็อกของคำสั่งที่ฉันรัน:

# Re-register all user and system apps
$brokenApps = Get-AppxPackage -AllUsers | Where-Object {$_.InstallLocation -and (Test-Path "$($_.InstallLocation)\AppXManifest.xml")}
foreach ($app in $brokenApps) {
 Add-AppxPackage -DisableDevelopmentMode -Register "$($app.InstallLocation)\AppXManifest.xml"
}

# Reset Microsoft Store cache
Start-Process wsreset.exe

การลงทะเบียนใหม่ของแพ็กเกจแอป (โดยเฉพาะกับ -AllUsers) อาจทำให้เกิดการหยุดชั่วคราวและอาจต้องใช้สิทธิ์ผู้ดูแลระบบ ให้รันคำสั่งในเทอร์มินัล PowerShell ที่มีสิทธิ์ยกระดับ และถ้าเป็นไปได้ ให้กำหนดเป้าหมายไปที่ผู้ใช้เฉพาะ

ฉันมักจะกลับมาใช้ PowerShell เสมอ

คำสั่งเหล่านี้ไม่ได้มีไว้เพียงเพื่อให้คุณดูมีความเชี่ยวชาญเท่านั้น พวกมันมีความแม่นยำและสามารถแก้ไขปัญหาที่พบบ่อยที่สุดของ Windows ได้อย่างมีประสิทธิภาพ สำหรับบางคำสั่งจะมีทางเลือกแบบ GUI แต่ฉันใช้ PowerShell เพราะมันให้การควบคุมที่มากกว่า

บทความที่เกี่ยวข้อง