Frage: Kann Powershell für jedes Objekt, das in einem Verzeichnis gefunden wird, automatisch eine einzelne komprimierte Archivdatei erstellen?
Hintergrund:
- Ein Verzeichnis mit ein paar hundert Dateien (verschiedene Dateitypen)
- Ich muss für jedes Archiv ein ZIP-Archiv erstellen.
Konzept Workflow:
- Powershell Script zeigt auf ein Verzeichnis
- Powershell entdeckt eine Reihe von Dateien (verschiedene Erweiterungen)
- Powershell komprimiert "Widget.CFG" automatisch in eine ZIP-Datei
- Prozesswiederholungen für jedes andere Objekt, das sich in demselben Verzeichnis befindet
Umgebung:
- Windows 7/64-Bit-Betriebssystem
- Powershell Version 5 (Major: 5 Minor: 1 Build: 15363 Revision: 786)
Ist das möglich?
Das Skript, das ich mir ausgedacht habe (siehe unten), erzeugt keine Ausgaben, und ich bin ratlos, warum.
Was ich bisher habe:
$Path = "C:\ziptest"
function Compress-ChildItem {
[CmdletBinding()]
param(
[Parameter(Position = 0, Mandatory, ValueFromPipeline)]
[ValidateNotNull()]
[System.IO.DirectoryInfo[]]
$Path
)
process {
Get-ChildItem -File $Path | ForEach-Object {
$NewName = "{0}-{1}.zip" -f $_.BaseName, ($_.Extension -replace '.')
$CompressionParams = @{
DestinationPath = Join-Path $Path -ChildPath $NewName
Path = $_.FullName
}
Compress-Archive @CompressionParams
}
}
}
Compress-Archive
Cmdlet.