J'ai besoin de décompresser un fichier avec PowerShell. La façon typique dont j'ai vu tout le monde faire cela est d'automatiser le shell avec un script.
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Cela ne fonctionnera pas pour moi, car Server Core n'a pas de shell, donc il n'y en a pas à automatiser. Cela donne une erreur E_FAIL COM.
Powershell ne semble pas être capable de le faire par lui-même, et si je choisis un tiers, je dois d'abord trouver un moyen de créer un script pour obtenir l'utilitaire sur le serveur. 7-Zip était mon choix, mais il ne semble pas que je puisse scripter le téléchargement et l'installation de celui-ci. Sourceforge continue de me cracher des fichiers HTML.
Comment puis-je complètement décompresser un fichier zip dans Server 2012 Core?
Réponses:
Server 2012 est livré avec Dot.NET 4.5 qui a System.IO.Compression.ZipFile qui a une méthode ExtractToDirectory. Vous devriez pouvoir l'utiliser à partir de PowerShell.
Voici un exemple.
Vous devez d'abord charger l'assembly ZipFile se trouve dans:
Extraire ensuite le contenu
Modifier: si vous avez mis à jour vers PowerShell 5 (Windows Management Framework 5.0), vous disposez enfin d'applets de commande natives:
la source