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

Get-ChildItem Cmdlet ใน Powershell คู่มือฉบับสมบูรณ์สำหรับไอที


รับ ChildItem PowerShell Cmdlet

PowerShell cmdlet Get-ChildItem รับออบเจ็กต์จากตำแหน่งที่ระบุตั้งแต่หนึ่งตำแหน่งขึ้นไป เช่น ไดเรกทอรีระบบไฟล์ กลุ่มรีจิสทรี หรือที่เก็บใบรับรอง ตำแหน่งเหล่านี้ถูกเปิดเผยโดยผู้ให้บริการ PowerShell

ถ้าตำแหน่งที่ตั้งเป็นคอนเทนเนอร์ cmdlet จะได้รับรายการลูกในคอนเทนเนอร์นั้น สามารถใช้พารามิเตอร์ -Recurse เพื่อรับไอเท็มจากคอนเทนเนอร์ย่อยทั้งหมด ในขณะที่พารามิเตอร์ -Depth สามารถใช้เพื่อจำกัดจำนวนระดับที่จะเรียกซ้ำ

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

ตัวอย่างเช่น cmdlet ต่อไปนี้จะดึงไฟล์และโฟลเดอร์ทั้งหมดจากไดรฟ์ปัจจุบัน:

Get-ChildItem

ตามที่คุณเห็น ตามค่าเริ่มต้น Get-ChildItem จะแสดงข้อมูลต่อไปนี้สำหรับแต่ละรายการ: โหมด, LastWriteTime, ขนาดไฟล์ (ความยาว) และชื่อ ตัวอักษรในคอลัมน์ Mode มีความหมายดังต่อไปนี้:

  • ล. — ลิงค์
  • d — ไดเร็กทอรี
  • เอ — เก็บถาวร
  • ร - อ่านอย่างเดียว
  • ชั่วโมง - ซ่อนเร้น
  • ส — ระบบ

ตัวอย่างรับ ChildItem

มาดูกรณีการใช้งานบางส่วนของ Get-ChildItem cmdlet:

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

ดึงรายการย่อยจากไดเร็กทอรีระบบไฟล์เฉพาะ

หากต้องการแสดงรายการย่อยในไดเร็กทอรีระบบไฟล์เฉพาะ ให้ใช้พารามิเตอร์ -Path เพื่อระบุไดเร็กทอรีนั้น ดังที่แสดงไว้ที่นี่:

Get-ChildItem -Path C:\”Program files”

รับชื่อของรายการย่อยในไดเร็กทอรี

หากต้องการดูเพียงชื่อของรายการย่อยในไดเร็กทอรี แทนที่จะดูรายละเอียดทั้งหมดในสกรีนช็อตก่อนหน้า ให้ใช้พารามิเตอร์ -Name:

Get-ChildItem -Path C:\"Program Files" -Name

รับไฟล์ข้อความทั้งหมดในไดเร็กทอรีและไดเร็กทอรีย่อย

หากต้องการแสดงไฟล์ .txt ทั้งหมดในไดเร็กทอรีและไดเร็กทอรีย่อย ให้ใช้ cmdlet ด้านล่าง

Get-ChildItem -Path C:\"Test Folder"\*.txt -Recurse -Force

พารามิเตอร์ -Path C:Test Folder\*.txt จำกัดผลลัพธ์ไว้เฉพาะไฟล์ในโฟลเดอร์ที่ระบุซึ่งมีนามสกุล .txt พารามิเตอร์ -Recurse จะขยายการค้นหาเพื่อรวมไดเร็กทอรีที่ระบุและไดเร็กทอรีย่อย ซึ่งแสดงอยู่ใต้ส่วนหัว Directory: พารามิเตอร์ -Force แสดงไฟล์ที่ซ่อน (ซึ่งมีโหมด h)

จำกัดผลลัพธ์ให้อยู่ในรายการย่อยที่ระบุ

หากต้องการค้นหาอ็อบเจ็กต์เฉพาะในไดเร็กทอรี ให้ใช้พารามิเตอร์ -Include cmdlet ด้านล่างค้นหาไฟล์ทั้งหมดในไดเร็กทอรี C:\Test Folder ที่มีนามสกุล .log:

Get-ChildItem -Path C:\”Test Folder”\* -Include *.log

โปรดทราบว่าจำเป็นต้องใช้อักขระไวด์การ์ดต่อท้าย (*) ในพารามิเตอร์ -Path ดังที่แสดงด้านบน เมื่อใช้พารามิเตอร์ -Include หากตัวเลือก Path ไม่มีเครื่องหมายดอกจันต่อท้าย คำสั่งจะกลับไปยังพร้อมท์ PowerShell โดยไม่มีเอาต์พุต ดังที่แสดงไว้ที่นี่:

Get-ChildItem -Path C:\”Test Folder”\ -Include *.log

อย่างไรก็ตาม เครื่องหมายดอกจันต่อท้ายในพารามิเตอร์ -Path นั้นไม่จำเป็น หากใช้พารามิเตอร์ -Recurse เพื่อค้นหาไดเร็กทอรีที่ระบุและไดเร็กทอรีย่อย ดังในตัวอย่างนี้:

Get-ChildItem -Path C:\Test Folder -Recurse -Include *.log

แยกรายการย่อยบางรายการออกจากผลลัพธ์

คุณสามารถแยกบางรายการออกจากผลลัพธ์ได้โดยใช้พารามิเตอร์ -Exclude เช่นเดียวกับพารามิเตอร์ -Include -Exclude จำเป็นต้องมีเครื่องหมายดอกจัน (*) ที่ส่วนท้ายของพารามิเตอร์ -Path เว้นแต่ว่าจะใช้พารามิเตอร์ -Recurse

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

Get-ChildItem -Path C:\”Test Folder”\ -Recurse

โปรดทราบว่าผลลัพธ์จะมีสองไฟล์ที่มีชื่อขึ้นต้นด้วยตัวอักษร S หากต้องการแยกออกจากผลลัพธ์ เราสามารถใช้ cmdlet ต่อไปนี้:

Get-ChildItem -Path C:\”Test Folder”\* -exclude S*

รับค่ารีจิสทรีจากโหนดรีจิสทรี

ในการรับค่ารีจิสตรีเราสามารถใช้พารามิเตอร์ -Path เพื่อระบุโหนดรีจิสตรี cmdlet ต่อไปนี้จะแสดงระดับบนสุดของคีย์รีจิสทรี (โปรดทราบว่า HKLM\SOFTWARE เป็นรูปแบบย่อของ HKEY_LOCAL_MACHINE\SOFTWARE):

Get-ChildItem -Path HKLM:\SOFTWARE

หากเราไม่ต้องการดูรีจิสตรีคีย์ทั้งหมด เราสามารถใช้พารามิเตอร์ -Exclude เพื่อกรองคีย์ที่เราไม่ต้องการออกได้ cmdlet ต่อไปนี้จะยกเว้นคีย์ทั้งหมดที่ขึ้นต้นด้วยตัวอักษร R และ C:

Get-ChildItem -Path HKLM:\SOFTWARE -Exclude R*,C*

โปรดทราบว่าการลงทะเบียน คลาส, ไคลเอนต์ และ RegisteredApplications จะไม่แสดงอีกต่อไป:

cmdlet ของต่อไปนี้แสดงวิธีการแสดงเนื้อหาของรีจิสทรีทั่วไปอื่นๆ:

Get-ChildItem -Path Registry::HKEY_LOCAL_MACHINE
Get-ChildItem -Path Registry::HKEY_CLASSES_ROOT
Get-ChildItem -Path Registry::HKEY_CURRENT_CONFIG
Get-ChildItem -Path Registry::HKEY_CURRENT_USER
Get-ChildItem -Path Registry::HKEY_USERS
Get-ChildItem -Path Registry::HKEY_PERFORMANCE_DATA

รับใบรับรองทั้งหมดด้วยหน่วยงานลงนามโค้ด

cmdlet ด้านล่างนี้ดึงข้อมูลใบรับรองแต่ละรายการที่มีสิทธิ์ในการลงนามโค้ดจากไดเร็กทอรี PowerShell Cert: และไดเร็กทอรีย่อย:

Get-ChildItem -Path Cert:\* -Recurse -CodeSigningCert

โปรดสังเกตว่าพารามิเตอร์ -Path ใช้เพื่อกำหนดผู้ให้บริการ Cert: พารามิเตอร์ -Recurse ค้นหาในไดเร็กทอรี -Path และไดเร็กทอรีย่อยเพื่อส่งคืนใบรับรองที่มีสิทธิในการลงนามโค้ด

ระบุจำนวนไดเรกทอรีย่อยที่ต้องการค้นหา

หากต้องการควบคุมจำนวนระดับไดเร็กทอรีย่อยที่จะรวมไว้ในการค้นหา ให้ใช้พารามิเตอร์ -Depth โฟลเดอร์ว่างจะไม่นับ

cmdlet ต่อไปนี้แสดงรายการทั้งหมดใน C:Drivers และไดเรกทอรีย่อยสองระดับ:

Get-ChildItem -Path C:\Drivers -Depth 2

รับไอเท็มที่มีคุณสมบัติเฉพาะ

หากต้องการรับเฉพาะรายการที่มีคุณสมบัติบางอย่าง ให้ใช้พารามิเตอร์ -Attributes ตัวอย่างเช่น หากต้องการรับไฟล์ที่ซ่อน (ไม่ใช่ไดเร็กทอรี) จากไดเร็กทอรีที่ระบุ ให้ใช้ cmdlet นี้:

Get-ChildItem -Path C:\”Test Folder”\ -Attributes !Directory+ Hidden,!Directory+Hidden

พารามิเตอร์ -Attributes ยอมรับค่าต่อไปนี้:

  • คลังเก็บเอกสารสำคัญ
  • บีบอัด
  • อุปกรณ์
  • ไดเรกทอรี (หรือ D)
  • เข้ารหัสแล้ว
  • ซ่อน (หรือ H)
  • IntegrityStream
  • ปกติ
  • ไม่มีข้อมูลขัดถู
  • ไม่จัดทำดัชนีเนื้อหา
  • ออฟไลน์
  • อ่านอย่างเดียว (หรือ R)
  • แยกวิเคราะห์
  • SparseFile
  • ระบบ (หรือ S)
  • ชั่วคราว

หากต้องการรวมแอตทริบิวต์ ให้ใช้ตัวดำเนินการต่อไปนี้:

  • - (ไม่)
  • + (และ)
  • , (หรือ)

ไม่ควรมีช่องว่างระหว่างตัวดำเนินการและแอตทริบิวต์ อนุญาตให้เว้นวรรคหลังเครื่องหมายจุลภาค

จำกัดการค้นหาโดยใช้ตัวกรอง

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

หากต้องการระบุไฟล์ สตริงตัวกรองจะถูกส่งไปยัง .NET API API รองรับเฉพาะไวด์การ์ด * และ ?

หากต้องการรับไฟล์ Word ทั้งหมดในไดเรกทอรีใดไดเรกทอรีหนึ่ง ให้ใช้ cmdlet นี้:

Get-ChildItem C:\"Test Folder"\* -filter *.docx

รับรายชื่อไดเรกทอรี

หากต้องการรับรายการไดเร็กทอรี ให้ใช้พารามิเตอร์ -Directory แม้ว่าคุณจะสามารถบรรลุเป้าหมายเดียวกันได้โดยใช้พารามิเตอร์ -Attributes กับคุณสมบัติ Directory แต่พารามิเตอร์ -Directory สามารถใช้กับพารามิเตอร์ -Recurse เพื่อดูไดเรกทอรีย่อยได้

cmdlet ต่อไปนี้จะแสดงรายการไดเรกทอรีระดับบนสุด:

Get-ChildItem -Path C:\ -Directory

ด้วยการเพิ่มพารามิเตอร์ -Recurse เราสามารถแสดงรายการไดเร็กทอรีย่อยได้เช่นกัน:

Get-ChildItem -Path C:\GroupID10SR1\ -Directory -Recurse

หากคุณต้องการดูเฉพาะลำดับชั้นของไดเร็กทอรีและไดเร็กทอรีย่อยโดยไม่มีรายละเอียดทั้งหมด ให้ใช้พารามิเตอร์ -Name:

Get-ChildItem -Path C:\GroupID10SR1\ -Directory -Name -Recurse

จำกัดผลลัพธ์ไว้ที่ไฟล์เท่านั้น

หากต้องการรับรายการไฟล์ ให้ใช้พารามิเตอร์ -File ดังที่แสดงไว้ที่นี่:

Get-ChildItem -Path C:\ -File

หากคุณต้องการดูไฟล์จากพาธที่ระบุและไดเร็กทอรีย่อย ให้ใช้พารามิเตอร์ -Recurse:

Get-ChildItem -Path C:\GroupID10SR1\ -File -Recurse

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