Từ tài liệu:Confused với tham số -gồm của cmdlet Get-ChildItem
-gồm
Chỉ truy xuất các mặt hàng quy định. Giá trị của thông số này đủ điều kiện thông số Đường dẫn. Nhập một đường dẫn thành phần hoặc mẫu, chẳng hạn như "* .txt". Ký tự đại diện được phép.
Các Bao gồm thông số chỉ có hiệu lực khi lệnh bao gồm các tham số Đệ quy hoặc con đường dẫn đến nội dung của một thư mục , chẳng hạn như C: \ Windows *, nơi các ký tự đại diện xác định nội dung của C: \ Windows thư mục.
hiểu biết đầu tiên của tôi là:
c:\test\a.txt
c:\test\b.txt
Vì vậy, để có được 'a.txt' và 'b.txt' Tôi có thể viết:
gci -Path "c:\test\*" -Include "*.txt"
Và công trình này. Nhưng bây giờ xem xét phân cấp như:
c:\test\a.txt
c:\test\b.txt
c:\test\c.txt\c.txt
Lệnh cùng lợi nhuận: a.txt, b.txt, c.txt
Logic thực tế có vẻ là:
-gồm có cả đã qua sử dụng để khớp tất cả các thực thể được chỉ định bởi -Path. Nếu phần tử phù hợp là một tệp - trả lại nó. Nếu phần tử phù hợp là một thư mục, hãy xem bên trong và trả lại kết hợp phù hợp với trẻ em cấp một.
Ngoài ra, các tài liệu hướng dẫn nói:
Các Bao gồm thông số chỉ có hiệu lực khi lệnh bao gồm các tham số Đệ quy hoặc con đường dẫn đến nội dung của một thư mục ...
Điều này cũng không đúng. Ví dụ.
gci -Path "c:\test" -Include "*.txt"
Nó không trả về gì, trong khi không có - Bao gồm tôi nhận được nội dung thư mục. Vì vậy, -Include chắc chắn là "hiệu quả". Điều gì thực sự xảy ra ở đây? -Path Chỉ định "c: \ test" và –Include cố gắng khớp với đường dẫn này. Vì "* .txt" không khớp với "test", nên không có gì trả về. Nhưng hãy xem xét điều này:
gci -Path "c:\test" -Include "*t"
Trả về a.txt, b.txt và c.txt là "* t" khớp "kiểm tra" và khớp với tất cả các mục con.
Sau khi tất cả, thậm chí biết cách Bao gồm hoạt động ngay bây giờ, tôi không hiểu khi nào nên sử dụng nó. Tại sao tôi cần nó nhìn vào bên trong thư mục con? Tại sao nó quá phức tạp?
Tôi đang sử dụng PowerShell-v2.0-CTP3 và ví dụ của bạn tạo ra bộ trống. – alex2k8
@ alex2k8, Không chắc chắn nên nói gì ở đây. Tôi đã thử ví dụ này trên 1.0 và phiên bản 2.0 sau, cả hai đều tạo ra kết quả tương tự. – JaredPar
@ Jared, điều này thật lạ. Xin vui lòng, bạn có thể thử gci -path c: \ * -in *. Tôi thấy trẻ em của c: \ và tất cả các thư mục con của nó một cấp xuống. Đây là mô tả tương tự http://www.eggheadcafe.com/software/aspnet/32624832/getchilditem-include-qu.aspx – alex2k8