Ich muss eine Datei mit Powershell entpacken. Die typische Art und Weise, wie ich das von allen gesehen habe, ist die Automatisierung der Shell mit einem Skript.
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Dies wird für mich nicht funktionieren, da der Server Core keine Shell hat und es keine gibt, die automatisiert werden kann. Dies gibt einen E_FAIL COM-Fehler.
Powershell scheint nicht in der Lage zu sein, dies selbst zu tun, und wenn ich zu einem Drittanbieter werde, muss ich erst eine Möglichkeit finden, das Dienstprogramm per Skript auf den Server zu bringen. 7-Zip war meine Anlaufstelle, aber es scheint nicht so, als könnte ich den Download und die Installation per Skript ausführen. Sourceforge spuckt mir immer wieder HTML-Dateien zurück.
Wie kann ich eine Zip-Datei in Server 2012 Core vollständig per Skript entpacken?
Antworten:
Server 2012 wird mit Dot.NET 4.5 geliefert, das über System.IO.Compression.ZipFile verfügt, das über eine ExtractToDirectory-Methode verfügt. Sie sollten dies von PowerShell aus verwenden können.
Hier ist ein Beispiel.
Zuerst müssen Sie die Assembly laden, in der sich ZipFile befindet:
Dann extrahieren Sie den Inhalt
Bearbeiten: Wenn Sie auf PowerShell 5 (Windows Management Framework 5.0) aktualisiert haben, haben Sie endlich native Cmdlets:
quelle