J'utilise Windows Server 2012 R2 (64 bits). J'ai la version 4 de Powershell disponible. J'essaie de compresser et décompresser des fichiers. Lorsque j'essaie la commande Write-Zip, elle me renvoie l'erreur suivante:
Write-Zip: le terme 'Write-Zip' n'est pas reconnu en tant que nom d'une applet de commande, fonction, fichier de script ou programme exploitable. Vérifiez l'orthographe du nom ou, si un chemin a été inclus, vérifiez que le chemin est correct et réessayez.
Que dois-je faire pour le réparer? Dois-je installer Zip/winrar sur le serveur? Ou existe-t-il une autre commande permettant de compresser/décompresser des fichiers?
Write-Zip
semble faire partie de http://pscx.codeplex.com/ qui nécessite une installation distincte avant de pouvoir l'utiliser.
Toutefois, si vous souhaitez simplement créer une archive Zip à partir d'un dossier, vous pouvez simplement exécuter
$source = "c:\temp\source"
$archive = "c:\temp\archive.Zip"
Add-Type -Assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($source, $archive)
Cela utilise la méthode CreateFromDirectory
de la classe .NET Framework ZipFile
. Il crée une archive Zip à partir des fichiers situés dans le dossier $source
et crée une archive telle que définie dans la variable $archive
. Remarque, ZipFile class a été introduit dans .NET Framework 4.5
Vous pouvez utiliser l’objet powershell personnalisé New-Object -ComObject Shell.Application
et copier le fichier avec des drapeaux pour le décompresser.
$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)
Source du crédit https://github.com/hashicorp/best-practices/blob/master/packer/scripts/windows/install_windows_updates.ps1#L12-L22
Cela ne fonctionne pas avec l'édition "principale" de Windows. Si possible, mettez à niveau vers powershell 5 et utilisez Expand Archive
car c'est beaucoup plus simple.
L'installation Write-Zip a peut-être été effectuée de manière incorrecte. Une modification manuelle incorrecte du paramètre d'environnement PSModulePath peut provoquer:
Mauvaise valeur (d'origine):
PSModulePath = %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;C:\Program Files\Intel\
Bonne valeur (qui a résolu le problème):
PSModulePath = C:\Program Files (x86)\PowerShell Community Extensions\Pscx3\;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\;C:\Program Files\Intel\
Si vous pouvez effectuer une mise à niveau vers PowerShell V5 ( https://www.Microsoft.com/en-us/download/details.aspx?id=50395 ), il les a en natif. https://richardspowershellblog.wordpress.com/2014/10/25/powershell-5-Zip-and-unzip/
Pour PowerShell version 4, vous pourrez peut-être utiliser cette recherche http://www.powershellgallery.com/items?q=Zip&x=0&y=0 . Cela ressemble également à faire ce que vous recherchez: https://www.powershellgallery.com/packages/Microsoft.PowerShell.Archive/1.0.1.0
Pour installer les modules, vous devez taper:
install-module -name <module name>
J'espère que ça aide ... Merci Tim.