2012-07-05 49 views
0

这听起来像一个坏笑话,但显然来自MS的天才arent能够使uber复杂 - 排除gci参数的工作。通过“genious”设计,它仅适用于文件,而不是整个路径。所以如何让它工作。 例如如何排除路径中包含“Windows”子字符串的所有文件? 天真
gci -exclude "*Windows*" -rec
不工作解决方法围绕设计破解Powershell gci -exclude

编辑:Google搜索/想通了这一点:

| where {$_.DirectoryName -notmatch ".*abcdef.*" } 

如果有人知道更好的解决方案,请分享。如果不会关闭问题。

+0

我想说不要关闭问题 - 回答自己的问题。这是鼓励。 – SirPentor 2012-07-05 17:54:39

+1

好吧,tbh我会觉得有点愚蠢,因为它更像是随机猜测的东西,但我想我现在需要了解它为什么会起作用并解释它。 :)该死的功课。 :) – NoSenseEtAl 2012-07-05 20:44:49

+0

这是一个好主意! – SirPentor 2012-07-06 14:42:36

回答

1

解决的办法是这样的:

gci ./ |Where{ $_.PSPath -notmatch ".*Windows.*"} 

的猜测解决这样的问题BTW有用的东西是要知道什么样的方法当前对象有,对于我用获取会员。示例输出:

PS C:\Users\jh> gci ./ | Get-Member 


     TypeName: System.IO.DirectoryInfo 

    Name      MemberType  Definition 
    ----      ----------  ---------- 
    Mode      CodeProperty System.String Mode{get=Mode;} 
    Create     Method   void Create(), void Create(System.Security.AccessControl.DirectorySecurity ... 
    CreateObjRef    Method   System.Runtime.Remoting.ObjRef CreateObjRef(type requestedType) 
    CreateSubdirectory  Method   System.IO.DirectoryInfo CreateSubdirectory(string path), System.IO.Director... 
    Delete     Method   void Delete(), void Delete(bool recursive) 
    EnumerateDirectories  Method   System.Collections.Generic.IEnumerable[System.IO.DirectoryInfo] EnumerateDi... 
    EnumerateFiles   Method   System.Collections.Generic.IEnumerable[System.IO.FileInfo] EnumerateFiles()... 
    EnumerateFileSystemInfos Method   System.Collections.Generic.IEnumerable[System.IO.FileSystemInfo] EnumerateF... 
    Equals     Method   bool Equals(System.Object obj) 
    GetAccessControl   Method   System.Security.AccessControl.DirectorySecurity GetAccessControl(), System.... 
    GetDirectories   Method   System.IO.DirectoryInfo[] GetDirectories(), System.IO.DirectoryInfo[] GetDi... 
    GetFiles     Method   System.IO.FileInfo[] GetFiles(string searchPattern), System.IO.FileInfo[] G... 
    GetFileSystemInfos  Method   System.IO.FileSystemInfo[] GetFileSystemInfos(string searchPattern), System... 
    GetHashCode    Method   int GetHashCode() 
    GetLifetimeService  Method   System.Object GetLifetimeService() 
    GetObjectData    Method   void GetObjectData(System.Runtime.Serialization.SerializationInfo info, Sys... 
    GetType     Method   type GetType() 
    InitializeLifetimeService Method   System.Object InitializeLifetimeService() 
    MoveTo     Method   void MoveTo(string destDirName) 
    Refresh     Method   void Refresh() 
    SetAccessControl   Method   void SetAccessControl(System.Security.AccessControl.DirectorySecurity direc... 
    ToString     Method   string ToString() 
    PSChildName    NoteProperty System.String PSChildName=Contacts 
    PSDrive     NoteProperty System.Management.Automation.PSDriveInfo PSDrive=C 
    PSIsContainer    NoteProperty System.Boolean PSIsContainer=True 
    PSParentPath    NoteProperty System.String PSParentPath=Microsoft.PowerShell.Core\FileSystem::C:\Users\jh 
    PSPath     NoteProperty System.String PSPath=Microsoft.PowerShell.Core\FileSystem::C:\Users\jh\Cont... 
    PSProvider    NoteProperty System.Management.Automation.ProviderInfo PSProvider=Microsoft.PowerShell.C... 
    Attributes    Property  System.IO.FileAttributes Attributes {get;set;} 
    CreationTime    Property  datetime CreationTime {get;set;} 
    CreationTimeUtc   Property  datetime CreationTimeUtc {get;set;} 
    Exists     Property  bool Exists {get;} 
    Extension     Property  string Extension {get;} 
    FullName     Property  string FullName {get;} 
    LastAccessTime   Property  datetime LastAccessTime {get;set;} 
    LastAccessTimeUtc   Property  datetime LastAccessTimeUtc {get;set;} 
    LastWriteTime    Property  datetime LastWriteTime {get;set;} 
    LastWriteTimeUtc   Property  datetime LastWriteTimeUtc {get;set;} 
    Name      Property  string Name {get;} 
    Parent     Property  System.IO.DirectoryInfo Parent {get;} 
    Root      Property  System.IO.DirectoryInfo Root {get;} 
    BaseName     ScriptProperty System.Object BaseName {get=$this.Name;}