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


















