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?
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
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.
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\
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>
Ich hoffe, das hilft. Danke, Tim.