Мне нужно распаковать файл с powershell. Типичный способ, которым я видел, как все это делают, - это автоматизировать оболочку с помощью скрипта.
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Это не сработает для меня, так как в Server Core нет оболочки, поэтому не нужно ее автоматизировать. Это дает ошибку E_FAIL COM.
Похоже, что Powershell не в состоянии сделать это самостоятельно, и, если я пойду к третьей стороне, мне придется найти способ сценария, с помощью которого утилита будет доставлена на сервер. 7-Zip был моим подходом, но, похоже, я не могу написать скрипт для его загрузки и установки. Sourceforge постоянно выкладывает мне обратно файлы HTML.
Как мне полностью выполнить сценарий распаковки zip-файла в Server 2012 Core?
Ответы:
Server 2012 поставляется с Dot.NET 4.5, в которой есть System.IO.Compression.ZipFile, в котором есть метод ExtractToDirectory. Вы должны быть в состоянии использовать это из PowerShell.
Вот пример.
Для начала нужно загрузить сборку, в которой находится ZipFile:
Затем извлеките содержимое
Изменить: Если вы обновились до PowerShell 5 (Windows Management Framework 5.0), у вас наконец есть собственные командлеты:
источник