วิธีแก้ไข ลอง Catch PowerShell ไม่ทำงาน

เพื่อแก้ไขการค้นหาไวยากรณ์ที่ไม่ถูกต้องนี้

  • ถ้า Try-Catch ไม่ทำงานบน PowerShell คุณต้องตรวจสอบค่าไวยากรณ์และข้อผิดพลาดที่ไม่ถูกต้อง
  • คู่มือนี้จะอธิบายวิธีต่างๆ ในการแก้ไขปัญหา
ลอง catch powershell ไม่ทำงาน

เอ็กซ์ติดตั้งโดยคลิกที่ไฟล์ดาวน์โหลด

ในการแก้ไขปัญหาต่าง ๆ ของพีซี เราขอแนะนำเครื่องมือซ่อมแซมพีซีของ Restoro:ซอฟต์แวร์นี้จะซ่อมแซมข้อผิดพลาดทั่วไปของคอมพิวเตอร์ ปกป้องคุณจากการสูญหายของไฟล์ มัลแวร์ ความล้มเหลวของฮาร์ดแวร์ และปรับแต่งพีซีของคุณเพื่อประสิทธิภาพสูงสุด แก้ไขปัญหาพีซีและกำจัดไวรัสใน 3 ขั้นตอนง่ายๆ:
  1. ดาวน์โหลดเครื่องมือซ่อมแซมพีซี Restoro ที่มาพร้อมกับเทคโนโลยีที่จดสิทธิบัตร (มีสิทธิบัตร ที่นี่).
  2. คลิก เริ่มสแกน เพื่อค้นหาปัญหาของ Windows ที่อาจทำให้เกิดปัญหากับพีซี
  3. คลิก ซ่อมทั้งหมด เพื่อแก้ไขปัญหาที่ส่งผลกระทบต่อความปลอดภัยและประสิทธิภาพของคอมพิวเตอร์ของคุณ
  • ดาวน์โหลด Restoro แล้วโดย 0 ผู้อ่านในเดือนนี้

คำสั่ง Try-Catch ใน พาวเวอร์เชลล์ จัดการข้อผิดพลาดและข้อยกเว้นในรหัสของคุณ หาก Try-Catch ไม่ทำงานตามที่ยกเว้นใน PowerShell อาจทำให้หงุดหงิดได้

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

อะไรเป็นสาเหตุของปัญหา Try-Catch ไม่ทำงานใน PowerShell

อาจมีสาเหตุหลายประการที่ทำให้คำสั่งไม่ทำงานบน PowerShell นี่คือบางส่วนที่พบบ่อยที่สุด:

  • ชุด ErrorAction เริ่มต้น - ถ้า ErrorAction ถูกตั้งค่าเป็นดำเนินการต่อจากนั้น Try-Catch จะไม่ทำงานตามที่คาดไว้
  • ข้อผิดพลาดทางไวยากรณ์ – หากไวยากรณ์ที่ใช้ไม่ถูกต้อง การจัดรูปแบบไม่ถูกต้อง หรือไม่มีคีย์เวิร์ด Try-Catch จะไม่ทำงาน
  • Cmdlet หรือพฤติกรรมของฟังก์ชัน – บางฟังก์ชันและ cmdlet มาพร้อมกับการจัดการข้อผิดพลาด ซึ่งอาจเข้ากันไม่ได้กับ Try-Catch
  • ตรรกะหรือการใช้ตัวแปรไม่ถูกต้อง – หากมีการใช้งานที่ไม่เหมาะสม ตัวแปร หรือลอจิกที่ไม่ถูกต้อง การ Try-Catch จะไม่ทำงาน

ฉันจะทำอย่างไรหาก Try-Catch ไม่ทำงานบน PowerShell

1. ตรวจสอบไวยากรณ์

  1. ก่อนอื่น คุณต้องตรวจสอบว่าคุณใช้ไวยากรณ์ที่ถูกต้องสำหรับเวอร์ชันของ PowerShell ที่คุณกำลังใช้อยู่หรือไม่
  2. จากนั้น ตรวจสอบว่าคุณได้วางบล็อก Try and Catch ในลำดับที่ถูกต้อง
  3. ไวยากรณ์พื้นฐานสำหรับ Try-Catch ระบุไว้ด้านล่าง แทนที่ # รหัสที่จะทำงานที่นี่ด้วยรหัสและ # รหัสการจัดการข้อผิดพลาดที่นี่ด้วยรหัสการจัดการข้อผิดพลาด:

พยายาม {
# รหัสที่จะเรียกใช้ที่นี่
}
จับ {
# รหัสการจัดการข้อผิดพลาดที่นี่
}

2. ตรวจสอบว่าคุณกำลังดักจับข้อผิดพลาดเฉพาะหรือไม่ 

คุณต้องตรวจสอบว่าคุณกำลังดักจับข้อผิดพลาดเฉพาะที่คุณต้องการจัดการหรือไม่ ไม่ใช่ข้อผิดพลาดทั้งหมด ทำตามขั้นตอนเหล่านี้เพื่อทำเช่นเดียวกัน:

  1. กด หน้าต่าง คีย์, พิมพ์ พาวเวอร์เชลล์, แล้วคลิก เรียกใช้ในฐานะผู้ดูแลระบบ.สคริปต์
  2. ในการดักจับข้อผิดพลาด คุณต้องใช้ $ ตัวแปรในบล็อก Catch เพื่อเข้าถึงข้อมูลเกี่ยวกับข้อผิดพลาดที่เกิดขึ้น ลองตรวจสอบตัวอย่างเดียวกันเพื่อทำความเข้าใจให้ดียิ่งขึ้น: พยายาม {
    Get-ChildItem - เส้นทาง C:\DoesNotExist
    }
    จับ {
    ถ้า ($_.Exception. GetType().Name -eq "DirectoryNotFoundException") {
    เขียนเอาต์พุต "ไม่พบไดเร็กทอรี"
    }
    อื่น {
    โยน $_.Exception|
    }
    }

3. ตั้งค่า ErrorAction 

ค่าเริ่มต้นสำหรับ ErrorAction คือดำเนินการต่อ อย่างไรก็ตาม เพื่อให้ Try-Catch ทำงาน คุณต้องตั้งค่า ErrorAction เป็น Stop โดยทำตามขั้นตอนเหล่านี้:

  1. เปิด พาวเวอร์เชลล์ ในฐานะผู้ดูแลระบบ
  2. คุณต้องใช้ Set-StrictMode cmdlet หรือพารามิเตอร์ ErrorAction ในแต่ละ cmdlet เพื่อให้เข้าใจได้ดีขึ้น เรามาดูตัวอย่าง:
ลอง Catch ด้วย ErrorAction Stop PowerShell

พยายาม {
Get-ChildItem -Path C:\DoesNotExist -ErrorAction Stop
}
จับ {
การเขียนเอาต์พุต $_.Exception ข้อความ
}

อ่านเพิ่มเติมเกี่ยวกับหัวข้อนี้
  • ต่อไปนี้คือวิธีกู้คืนคีย์ BitLocker จาก OneDrive
  • วิธีใช้ Phone Link สำหรับ iPhone บน Windows 11
  • DaVinci แก้ไขการใช้งาน CPU สูง: วิธีลด

4. ใช้ประเภทข้อยกเว้นที่ถูกต้อง

สิ่งสำคัญคือต้องใช้ข้อยกเว้นที่ถูกต้องเมื่อใช้ Try-Catch เนื่องจากสามารถจัดการกับข้อยกเว้นของระบบเท่านั้น ประเภทข้อยกเว้น หากคุณเคยใช้งานระบบที่ไม่ใช่ เกิดข้อผิดพลาดในการยกเว้น ดังนั้น Try-Catch จะไม่ทำงาน

สำหรับที่ไม่ใช่ระบบ ข้อยกเว้น คุณต้องใช้กลไกการจัดการข้อผิดพลาดของเฟรมเวิร์ก NET หรือตรวจจับข้อผิดพลาด

5. หลีกเลี่ยงการยุติสคริปต์ 

หากสคริปต์ของคุณถูกยกเลิกก่อนที่จะถึงบล็อก Catch Try-Cach จะไม่มีโอกาสจัดการกับข้อผิดพลาด เพื่อหลีกเลี่ยงการยุติสคริปต์ ให้ทำตามขั้นตอนเหล่านี้:

  1. ปล่อย พาวเวอร์เชลล์ ด้วยสิทธิ์ของผู้ดูแลระบบ
  2. คุณต้องใช้ ดำเนินการต่อ แถลงการณ์หลัง จับ ปิดกั้น. มาทำความเข้าใจด้วยตัวอย่าง:
ลองจับในที่สุด

พยายาม {
Get-ChildItem - เส้นทาง C:\DoesNotExist
}
จับ {
การเขียนเอาต์พุต $_.Exception ข้อความ
ดำเนินการต่อ
}

6. ใช้ Try-Catch-ในที่สุด

 หากคำสั่ง Try-Catch ยังคงไม่ทำงาน คุณสามารถใช้โครงสร้าง Try-Catch-Finally แทนได้ สิ่งนี้ทำให้มั่นใจได้ว่าโค้ดของคุณจะทำงานจนจบแม้ว่าจะมีข้อยกเว้นก็ตาม

  1. เปิด พาวเวอร์เชลล์ ในฐานะผู้ดูแลระบบ
  2. พิมพ์คำสั่งด้วย ลองจับในที่สุด. นี่คือตัวอย่างเพื่อให้เข้าใจสคริปต์ได้ดีขึ้น:

พยายาม {
# รหัสของคุณที่นี่

จับ [ระบบ. ข้อยกเว้น] {
# รหัสการจัดการข้อยกเว้นที่นี่

ในที่สุด {
 # ล้างรหัสที่นี่
}

ดังนั้น นี่คือวิธีที่คุณสามารถแก้ไขปัญหา Try Catch ไม่ทำงานบน PowerShell หากคุณมีคำถามใด ๆ เกี่ยวกับ Try-Catch โปรดระบุในส่วนความคิดเห็นด้านล่าง เรายินดีที่จะช่วยเหลือ!

หากคุณต้องการทราบวิธีหยุด PowerShell ไม่ให้ปิดหลังจากเรียกใช้สคริปต์ คุณสามารถอ่านสิ่งนี้.

ยังคงมีปัญหา? แก้ไขด้วยเครื่องมือนี้:

ผู้สนับสนุน

หากคำแนะนำข้างต้นไม่สามารถแก้ปัญหาของคุณได้ พีซีของคุณอาจประสบปัญหา Windows ที่ลึกกว่านั้น เราแนะนำ ดาวน์โหลดเครื่องมือซ่อมแซมพีซีนี้ (ได้รับการจัดอันดับยอดเยี่ยมบน TrustPilot.com) เพื่อจัดการกับปัญหาเหล่านี้ได้อย่างง่ายดาย หลังการติดตั้ง เพียงคลิกที่ เริ่มสแกน ปุ่มแล้วกดบน ซ่อมทั้งหมด.

PowerShell เป็นโอเพ่นซอร์สและพร้อมใช้งานบน Linux. แล้ว

PowerShell เป็นโอเพ่นซอร์สและพร้อมใช้งานบน Linux. แล้วลินุกซ์Powershell

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

อ่านเพิ่มเติม
การแก้ไข: PowerShell ไม่แสดงผลแบบเต็ม

การแก้ไข: PowerShell ไม่แสดงผลแบบเต็มPowershell

ในการแก้ไขปัญหาต่าง ๆ ของพีซี เราขอแนะนำ DriverFix:ซอฟต์แวร์นี้จะช่วยให้ไดรเวอร์ของคุณทำงานอยู่เสมอ ทำให้คุณปลอดภัยจากข้อผิดพลาดทั่วไปของคอมพิวเตอร์และความล้มเหลวของฮาร์ดแวร์ ตรวจสอบไดรเวอร์ทั้งหมด...

อ่านเพิ่มเติม
Powershell Get-AppxPackage ไม่ทำงานใน Windows 11/10

Powershell Get-AppxPackage ไม่ทำงานใน Windows 11/10Powershell

คือ 'รับ-AppxPackage'คำสั่งไม่ทำงานบนเทอร์มินัล PowerShell ของคุณหรือไม่ ตามที่ผู้ใช้บางคนระบุว่า พวกเขาได้รับข้อความแสดงข้อผิดพลาดขนาดใหญ่ ซึ่งสรุปว่า “ไม่สามารถเริ่มบริการได้ เนื่องจากถูกปิดใช้งา...

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