it-swarm.com.de

Datei in Powershell komprimieren und entpacken 4

Ich verwende Windows Server 2012 R2 (64 Bit). Ich habe Powershell Version 4 zur Verfügung. Ich versuche, Dateien zu komprimieren und zu entpacken. Wenn ich den Write-Zip-Befehl versuche, wird folgender Fehler ausgegeben:

Write-Zip: Der Begriff "Write-Zip" wird nicht als Name eines Cmdlets, einer Funktion, Skriptdatei oder eines funktionsfähigen -Programms erkannt. Überprüfen Sie die Schreibweise des Namens oder überprüfen Sie, ob der Pfad korrekt ist, und versuchen Sie es erneut.

Was muss ich tun, um das Problem zu beheben? Muss ich Zip/winrar auf dem Server installieren? Oder gibt es noch einen anderen Befehl zum Entpacken von Dateien?

5
Raji

Write-Zip scheint Teil von http://pscx.codeplex.com/ zu sein, die eine separate Installation erfordern, bevor Sie sie verwenden können. 

Wenn Sie jedoch nur ein Zip-Archiv aus einem Ordner erstellen möchten, können Sie es einfach ausführen

$source = "c:\temp\source"
$archive = "c:\temp\archive.Zip"

Add-Type -Assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source, $archive)

Hierbei wird die CreateFromDirectory-Methode der .NET Framework-Klasse ZipFile verwendet. Es erstellt ein Zip-Archiv aus den Dateien im Ordner $source und erstellt ein Archiv, wie in der Variablen $archive definiert. Hinweis: ZipFile Klasse wurde in .NET Framework 4.5 eingeführt

15
kim

Sie können das benutzerdefinierte Powershell-Objekt New-Object -ComObject Shell.Application verwenden und die Datei mit Flags zum Entpacken kopieren. 

$filePath = "foo.Zip"
$Shell = New-Object -ComObject Shell.Application
$zipFile = $Shell.NameSpace($filePath)
$destinationFolder = $Shell.NameSpace("C:\Program Files\WindowsPowerShell\Modules")

$copyFlags = 0x00
$copyFlags += 0x04 # Hide progress dialogs
$copyFlags += 0x10 # Overwrite existing files

$destinationFolder.CopyHere($zipFile.Items(), $copyFlags)

Kreditquelle https://github.com/hashicorp/best-practices/blob/master/packer/scripts/windows/install_windows_updates.ps1#L12-L22

Dies funktioniert nicht mit der 'Kern'-Edition von Windows. Wenn möglich, aktualisieren Sie auf Powershell 5 und verwenden Sie Expand Archive, da dies wesentlich einfacher ist. 

3
spuder

Die Write-Zip-Installation wurde möglicherweise falsch durchgeführt. Eine falsche manuelle Bearbeitung des Umgebungsparameters PSModulePath kann dies verursachen:

Schlechter (ursprünglicher) Wert:

PSModulePath = %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;C:\Program Files\Intel\

Guter Wert (was das Problem gelöst hat):

PSModulePath = C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files\Intel\
0
Skylynx

Wenn Sie ein Upgrade auf PowerShell V5 ( https://www.Microsoft.com/en-us/download/details.aspx?id=50395 ) durchführen können, ist dies systemeigen. https://richardspowershellblog.wordpress.com/2014/10/25/powershell-5-Zip-and-unzip/

Bei PowerShell Version 4 können Sie diese Suche möglicherweise verwenden http://www.powershellgallery.com/items?q=Zip&x=0&y=0 . Dies scheint auch zu tun, was Sie suchen: https://www.powershellgallery.com/packages/Microsoft.PowerShell.Archive/1.0.1.0

Um die Module zu installieren, müssen Sie Folgendes eingeben:

install-module -name <module name>
  • powershellgallery.com ist eine kostenlose Website zum Hochladen. Bitte überprüfen und verstehen Sie das Modul, bevor Sie es ausführen.

Ich hoffe, das hilft. Danke, Tim.

0
Tim Haintz