Native .tar extraction en Powershell
J'ai un .tar.gz
fichier que j'ai besoin d'extraire. J'ai géré la gunzip peu avec le GzipStream
objet de System.IO.Compression
, mais je ne pouvais pas trouver quoi que ce soit pour traiter avec les archives dans cet espace de noms. Est-il un moyen de traiter avec .tar
nativement les fichiers dans Powershell? Notez qu'il est seulement important que je sois capable de appel une telle fonction/méthode/de construction de l'objet/système binaire à partir d'un script Powershell; il n'a pas besoin d'être réellement écrit dans powershell. (Si c'est important je suis à l'aide de 64-bit de windows 10)
P. S. s'il vous plaît ne pas dire "utiliser 7zip"; ce n'est pas natif
Peut-être, mais je ne le pense pas, et je ne m'attends pas. Gzip est utilisé par la compression HTTP, au moins ASP.Net, Appelez-WebRequest, c'est à dire/Edge aurait besoin de soutien, mais ce qui, dans l'écosystème Windows est basé sur 'tar'?
Quand vous dites indigènes voulez-vous dire "pur" PowerShell ou accepteriez-vous de charger un fichier binaire module PowerShell avec une dot net de classe?
Vous devrez écrire un analyseur de goudron dans PowerShell ou l'importation d'une bibliothèque tierce comme SharpCompress ou SharpZipLib
J'ai essayé d'installer gnu Make et gnu FindUtils sur Windows 10 ordinateurs, avec l'intention de remplacer lente gorgée de tâches avec rapide de faire des recettes (Windows
FIND
est inutilisable pour quelqu'un habitué à la version gnu, donc findutils). La source de ces n'est disponible qu'en archives ou des zips sur sourceforge, mais sourceforge ne prend pas en charge statique d'hébergement de fichiers, donc je ne pouvais pas télécharger à partir de là sans outils avancés comme cURL
(indisponible sur la vanille installe de Windows). J'espère que ça aide avec tout ce que vous besoin de cela pour.OriginalL'auteur bfieck | 2016-08-04
Vous devez vous connecter pour publier un commentaire.
Je suis assez sûr que Windows 10 n'ont pas de soutien pour l'extraction des fichiers tar par défaut.
1. La solution rapide et facile pour Windows 10
Si vous pouvez vous attendre le script pour avoir accès à une connexion Internet active, vous pouvez simplement obtenir 7Zip en charge l'utilisation de l'intégré dans le gestionnaire de paquets. Cette solution:
Ici, il est:
Pour l'utiliser:
Il fait le travail, mais il fait un changement persistant sur le système client. Il y a un mieux, mais un peu plus complexe, solution:
2. La meilleure solution
La meilleure solution est de regrouper 7Zip4PowerShell avec votre script. Cette solution:
un. Télécharger une copie de la 7Zip4PowerShell paquet
Il est distribué sous la licence LGPL 2.1 la licence et donc c'est OK pour le bundle de l'emballage de votre produit. Vous devez ajouter une note à votre documentation qu'il utilise le package et de fournir un lien puisque vous êtes tenus de fournir l'accès au code source pour GNU produits homologués.
Ce sera le télécharger dans le répertoire en cours. Il est plus facile de faire cela sur Windows 10, mais il y a des instructions sur la façon d'ajouter PowerShell Galerie de votre système sur des versions antérieures de Windows à partir du lien ci-dessus.
b. Importer le module lorsque vous avez besoin d'extraire le fichier tar
J'ai fait une fonction simple qui est juste pour démontrer comment vous pouvez le faire en se fondant sur la première solution:
Vous aurez besoin d'ajuster
$pathToModule
à l'endroit où le logiciel du module est en fait stockée lorsque votre script s'exécute, mais vous devriez obtenir l'idée. J'ai écrit cet exemple de telle sorte que vous pouvez simplement coller dans les deux blocs de code ci-dessus dans une fenêtre PowerShell et d'obtenir un travailExpand-Tar
applet de commande:$pathToModule
ou ajouter-RequiredVersion '1.8.0'
à laSave-Module
de commande.Merci - j'ai mis à jour à 1.9.0 que je ne peux pas voir une simple solution de contournement et il se sent mal à suggérer des versions antérieures.
OriginalL'auteur Don Cruickshank
Solution Possible:
J'ai Windows 10 et je voulais courir
curl
+tar
dans Powershell, mais il a manqué de soutien. Heureusement, j'ai eu Ubuntu bash sur Windows 10 qui vient aveccurl
ettar
préinstallé et il a couru à l'intérieur de cet environnement, puis après le téléchargement et l'extraction, je remis à Powershell pour continuer ce que je faisais.Ou @Ne Cruickshank mentionné dans les commentaires ci-dessous, vous pouvez installer 7zip soutien par PowerShell directement avec
Install-Package 7Zip4Powershell
. LeExpand-7zip
cmdlet extrait de plusieurs formats d'archives, y compris le goudron.Ces solutions ne permettent pas de résoudre votre problème particulier, mais pour ces qui sont coincés avec Windows, peut être utile.
Install-Package 7Zip4Powershell
. LeExpand-7zip
cmdlet extrait de plusieurs formats d'archives, y compris le goudron.Merci pour cette suggestion.
OriginalL'auteur Kunok
Alors que cela fait onze jours que j'ai demandé et le consensus général est: "il n'existe Pas d'outils natifs de la vanille, installation de la fenêtre qui peut gérer le goudron extraction 'pour vous'".
Cette réponse vient de Matthias R. Jensen et TessellatingHeckler, qui ont tous deux refusé de répondre à l'extérieur de commentaires (je soupçonne en raison de ne pas vouloir dire "non" sans une connaissance intime de l'ensemble du système de Windows architecture, qui est juste).
Il y a certainement des scripts et des classes et des programmes que vous pouvez installer, mais rien de "native".
OriginalL'auteur bfieck
C'est le fragment d'un script PowerShell:
qui est l'équivalent du code de TarTool.exe utilitaire
OriginalL'auteur user3161761
Cet extrait a été de travailler pour moi, je ne pense pas que j'ai rien installé que c'est à l'aide. J'ai encore à comprendre comment l'extrait du goudron de ce menu.
gzip
d et j'ai un.tar
OriginalL'auteur user2197169
Pourquoi ne pas utiliser 7zip?
Si il y a une règle d'entreprise qui refuse de tels outils, en essayant de mettre en œuvre un travail autour de est sans issue. Dans un tel environnement, vous devez parler avec les parties prenantes et soit:
OriginalL'auteur vonPryz