围绕设计的解决方法Powershell gci -exclude

时间:2012-07-05 16:42:17

标签: powershell

这听起来像个恶作剧,但显然来自MS的天才不能制作超级复杂的 - 排除gci参数的工作。通过“天才”设计,它只适用于文件,而不是整个路径。那么如何让它发挥作用。 例如,如何排除路径包含“Windows”子字符串的所有文件? 天真
gci -exclude "*Windows*" -rec
   不起作用

编辑:Google搜索/想出这个:

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

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

1 个答案:

答案 0 :(得分:1)

解决方案是:

 gci ./ |Where{ $_.PSPath -notmatch ".*Windows.*"}
猜测这类问题的解决方案是否有用,就是知道当前对象有哪些方法,因为我使用了Get-Member。示例输出:

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;}