zurück zum Artikel

Komprimieren eines NTFS-Ordners mit PowerShell

Der Dotnet-Doktor

Eines unserer auf Windows PowerShell [1] 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 [2]-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"
}

URL dieses Artikels:
http://www.heise.de/-2041748

Links in diesem Artikel:
[1] http://www.entwickler-lexikon.de/Lex/4154.aspx
[2] http://www.entwickler-lexikon.de/Lex/237.aspx