vendredi 4 mars 2011

émulation de la commande externe attrib.exe

Set-Attrib est une fonction qui associe à la fois la simplicité du codage en PS et la puissance de celui-ci:


Function Set-Attrib
{
  param(
   [string]$Path=".",
   [string]$Filter="*",
   [switch]$ReadOnly,
   [switch]$System,
   [switch]$Normal,
   [switch]$Hidden,
   [switch]$Archive,
   [switch]$Recurse
  )
  $attr=@()
  Switch($true)
   {
     $ReadOnly { $attr+='ReadOnly'}
     $Archive  { $attr+='Archive' }
     $Hidden   { $attr+='Hidden'  }
     $System   { $attr+='System'  }
     $Normal   { $attr+='Normal'  }
   }      
 gci -Path $Path -Fi $Filter -Recurse:$Recurse -Fo | `
   Where { -not $_.PSIsContainer } | `
     ForEach {
       $_.PsBase.Attributes=[System.IO.FileAttributes]$attr
     }
 <#
   .SYNOPSIS
       Modifie les attributs des fichiers
   .DESCRIPTION
     Modifie les attributs des fichiers, les attributs supportés sont:
       -ReadOnly: fichier en Lecture seul
       -System  : fichier système
       -Hidden  : fichier caché
       -Archive : fichier archivé
   .PARAMETER Path
     Chemin du répertoire source
   .PARAMETER Filter
     Filtre sur les fichiers à traiter ou bien un nom d'un fichier  
   .PARAMETER Recurse
     recherche recursive  
   .EXAMPLE 
     PS C:\> Set-Attrib -Path c: -Filter boot.ini -Normal
     hôtter du fichier c:\boot.ini les attributs "Sytème" et "Caché"
   .EXAMPLE
     PS C:\> Set-Attrib -Filter *.inf -Recurse -ReadOnly -System
     Modifie tous les attributs des fichiers *.iNF du répértoire courant et tous ses sous répértoie en fichiers "En lecture seul" et "Système"
   .EXAMPLE
     PS C:\> Set-Attrib -Hidden
     Caché tous les fichiers du répertoire en cours    
 #>    
}

Aucun commentaire: