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

คำสั่งนี้แสดงรายการโมดูล PowerShell ของบริษัทอื่นที่ติดตั้งและลงทะเบียนผ่าน Install-Module cmdlet ในกรณีของฉัน โมดูล PS ทั้งหมดได้รับการติดตั้งผ่านพื้นที่เก็บข้อมูล PSGallery
หากต้องการลบโมดูลที่ติดตั้ง ให้ระบุชื่อโมดูลในคำสั่ง Uninstall-Module ตัวอย่างเช่น:
ถอนการติดตั้งโมดูลชื่อ PSWindowsUpdate
คอมพิวเตอร์อาจมีการติดตั้งโมดูลมากกว่าหนึ่งเวอร์ชัน ดังนั้น cmdlet นี้จะลบโมดูลเวอร์ชันล่าสุดออกหรือจะล้มเหลวหากพบหลายเวอร์ชัน เวอร์ชันที่มีอยู่ของโมดูลสามารถแสดงได้ดังต่อไปนี้:
รับโมดูล pswindowsupdate-ListAvailable

หากต้องการถอนการติดตั้งเวอร์ชันโมดูลเฉพาะ
ถอนการติดตั้ง-โมดูล-ชื่อ PSWindowsUpdate-RequiredVersion 2.2.1.4-Verbose
ลบโมดูลเฉพาะทุกเวอร์ชัน ยกเว้นโมดูลล่าสุด
` $moduleName=“PSWindowsUpdate”$versions=รับ-InstalledModule-ชื่อ $moduleName-AllVersions | เรียงลำดับ-วัตถุเวอร์ชัน-จากมากไปน้อย
$ รุ่น | เลือก-วัตถุ-ข้าม 1 | ForEach-Object { ถอนการติดตั้งโมดูลชื่อ $ moduleName-RequiredVersion $ _.Version-Force } `
ลบเวอร์ชันโมดูลทั้งหมด:
ถอนการติดตั้ง-โมดูล-ชื่อ PSWindowsUpdate-AllVersions
Invoke-Command cmdlet สามารถใช้เพื่อลบโมดูล PowerShell บนคอมพิวเตอร์ระยะไกล:
เรียกใช้-Command-ComputerName mun-dc01-ScriptBlock {ถอนการติดตั้งโมดูล PSWindowsUpdate-RequiredVersion 2.2.1.2-Force-Verbose}
เมื่อถอนการติดตั้งโมดูล อาจเกิดข้อผิดพลาดโดยระบุว่ามีการใช้งานโมดูลอยู่
WARNING: The version '2.2.1.4' of module 'PSWindowsUpdate' is currently in use. Retry the operation after closing the applications.PackageManagement\Uninstall-Package : Module 'PSWindowsUpdate' is in currently in use or you don't have the required permissions.

หากต้องการลบโมดูลดังกล่าว ขั้นแรกให้ปิดเซสชัน PowerShell ที่มีการโหลด (นำเข้า) แสดงรายการโมดูล PS ที่โหลดในเซสชันปัจจุบัน:
รับโมดูล
หากต้องการยกเลิกการโหลดโมดูลจากหน่วยความจำโดยไม่ต้องปิดคอนโซล PS ปัจจุบัน ให้รันคำสั่งต่อไปนี้:
ลบโมดูลชื่อ PSWindowsUpdate

ลองลบโมดูลอีกครั้งหลังจากนี้ (ในบางกรณี คุณต้องเพิ่มตัวเลือก-Force เพื่อบังคับให้ลบโมดูล แต่ควรระวัง เนื่องจากอาจทำให้การขึ้นต่อกันของโมดูลอื่นๆ เสียหายได้):
ถอนการติดตั้ง-โมดูล-ชื่อ PSWindowsUpdate-บังคับ
หากโมดูลที่คุณต้องการถอนการติดตั้งโหลดโดยอัตโนมัติเมื่อคุณเปิดเซสชัน PowerShell คุณสามารถข้ามสิ่งนี้ได้โดยเปิดคอนโซล PowerShell โดยไม่ต้องโหลดไฟล์โปรไฟล์ PS1 ของคุณ:
Powershell.exe-NoProfile-คำสั่ง "ถอนการติดตั้งโมดูล ImportExcel"
รายการโมดูล PowerShell ทั้งหมดที่มีบนคอมพิวเตอร์ (รวมถึงโมดูลที่ติดตั้งผ่านพื้นที่เก็บข้อมูลและโมดูลที่ติดตั้งด้วยตนเอง) สามารถแสดงได้ดังต่อไปนี้:
Get-Module-ListAvailable|เลือกชื่อ รุ่น เส้นทาง

คอลัมน์ Path จะแสดงตำแหน่งของไฟล์โมดูล ใน Windows PowerShell คุณสามารถใช้ (นำเข้า) โมดูลที่ได้รับการติดตั้ง (คัดลอก) ไปยังไดเร็กทอรีต่อไปนี้:
C:\Users\%username%\Documents\WindowsPowerShell\ModulesC:\Program Files\WindowsPowerShell\ModulesC:\Windows\system32\WindowsPowerShell\v1.0\Modules
คุณสามารถดูรายการเส้นทางนี้ได้ในตัวแปรสภาพแวดล้อม $env:PSModulePath:

ใน PowerShell Core 7.x ตัวแปร $env:PSModulePath มีพาธเพิ่มเติมต่อไปนี้:
C:\program files\windowsapps\microsoft.powershell_7.5.2.0_x64__8wekyb3d8bbwe\ModulesC:\Program Files\PowerShell\ModulesC:\program files\powershell\7\Modules

ไฟล์ที่เหลืออาจยังคงอยู่ในไดเร็กทอรีโมดูลหลังจากการถอนการติดตั้ง ไฟล์เหล่านี้จะต้องถูกลบออกด้วยตนเอง ตัวอย่างเช่น สคริปต์ PS นี้จะถอนการติดตั้งโมดูลและล้างเนื้อหาของโฟลเดอร์หากโฟลเดอร์ไม่ว่างเปล่า
` $Module=รับโมดูล ImportExcel-ListAvailable
ถอนการติดตั้งโมดูล $Module.Name-verbose
ลบรายการ $Module.ModuleBase-Recurse-Force `
*️⃣ ลิงค์ที่มา:
ปัญหาการเริ่มต้น PowerShell ช้า, PSWindowsUpdate, , เรียกใช้คำสั่ง, ติดตั้งด้วยตนเอง,