Muszę rozpakować plik za pomocą programu PowerShell. Typowy sposób, w jaki widziałem, jak wszyscy to robią, to automatyzacja powłoki za pomocą skryptu.
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Dla mnie to nie zadziała, ponieważ Server Core nie ma powłoki, więc nie można jej zautomatyzować. Daje to błąd COM E_FAIL.
Wydaje się, że Powershell nie jest w stanie zrobić tego samodzielnie, a jeśli pójdę na stronę trzecią, muszę najpierw znaleźć sposób na skryptowe przeniesienie narzędzia na serwer. 7-Zip było moim celem, ale nie wydaje mi się, żebym mógł napisać skrypt do pobrania i instalacji. Sourceforge wciąż wypluwa mi pliki HTML.
Jak mogę całkowicie skrypt rozpakować plik zip w Server 2012 Core?
Odpowiedzi:
Serwer 2012 jest dostarczany z Dot.NET 4.5, który ma System.IO.Compression.ZipFile, który ma metodę ExtractToDirectory. Powinieneś być w stanie korzystać z tego z PowerShell.
Oto przykład.
Najpierw musisz załadować zestaw, w którym znajduje się plik ZipFile:
Następnie wyodrębnij zawartość
Edycja: Jeśli zaktualizowano do programu PowerShell 5 (Windows Management Framework 5.0), w końcu masz natywne polecenia cmdlet:
źródło