คำสั่ง 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 เพราะมันให้การควบคุมที่มากกว่า









