编辑希望能在这里澄清我费解的和误导性的问题......根据我对-file接受输入错误的假设。 谢谢你往那儿我,并指出这只是一个开关参数; 在我的例子投入实际上得到传递给-path。 听起来像可能以搜索多种文件类型最快纯粹的powershell方式,由于-filter只接受单个输入和-include较慢。
一开始childItem 文件说,“筛选器比其他参数更有效,因为提供检索对象的时候,而不是由Windows PowerShell筛选对象,他们被检索后应用它们。”
v3具有一个新的参数设置与文件参数,可能意味着不包括目录,以匹配CMD.EXE的dir /a:-d
像-include和不同的筛选器,-file接受多个,如gci -file "*.ldf","*.bak"
所以我不知道,并且迄今未能可靠地测试,如果-file就像是从性能的角度来看型滤波器,即“更有效率”,还是更喜欢“其他参数”像-include。 如果-file是一个过滤器,这很好,因为AFAICT的筛选器一次只能处理一个过滤器,所以如果你想多个过滤器(如* .LDF和名为* .bak),那么你需要或者运行gci -filter
两次或使用-包括代替。 所以我想知道如果-file让我们获得一个过滤器的效率优势,为多个过滤器。
我偶然在那的让我乐观一些错误文本。 文件参数要-path成为当前目录,所以这个gci -path $path -file "*.bak","*.ldf"
给出了一个错误。 推位置似乎是一个可行的解决办法,但在这里我更感兴趣的是错误的文本内容:
获取-ChildItem:无法将“System.Object的[]”的类型“System.String”要求的参数“过滤器”。 不支持指定的方法。
我叫-file而是“参数‘过滤器’的”错误抱怨。 因此,也许-file高效就像一个过滤器? OTOH,-filter不需要-path是当前目录,因此在这方面-file更像-include。