Eines unserer auf Windows PowerShell basierenden Backup-Skripte habe ich heute erweitert um die Möglichkeit, Ordner zu komprimieren, um Festplattenplatz zu sparen. Das Komprimieren eines Ordners auf einem NTFS-Medium erledigt man in einer Zeile mit der Compress()-Methode in der WMI-Klasse Win32_Directory: 
  
Invoke-WmiMethod -Path "Win32_Directory.Name='$ordner'" -Name compress 
Die Aufhebung der Komprimierung erfolgt mit:
Invoke-WmiMethod -Path "Win32_Directory.Name='$ordner'" -Name uncompress 
Da WMI grundsätzlich Remoting-fähig ist, kann man über den WMI-Pfad die Aktion auch auf einem entfernten System ausführen, sofern man dort die Rechte hat:
Invoke-WmiMethod -Path 
  "\\Rechnername\root\cimv2:Win32_Directory.Name='$ordner'" -Name compress 
Es folgt ein Beispiel-Skript, das einen Ordner anlegt (wenn noch nicht vorhanden) und komprimiert (wenn noch nicht komprimiert):
# Pfad
$ordner = "c:\temp\komprimierterOrdner"
"Anlegen eines komprimierten Ordners: $ordner"
# Ordner anlegen
if (-not (Test-Path $ordner)) {
  "Ordner existiert nicht und wird angelegt..."
  md $ordner
  "OK"
}
else
{
  "Ordner existiert schon"
}
# Ordner komprimieren
$ordnerobject = ([WMI] "Win32_Directory.Name='$ordner'")
if (-not ($ordnerobject.compressed))
{
 "Ordner wird komprimiert..."
  Invoke-WmiMethod -Path "Win32_Directory.Name='$ordner'" -Name compress
 "OK"
}
else
{
  "Ordner ist schon komprimiert"
} 
()