Как распаковывать большие архивы в DSC-конфигурациях Powershell
Если вам когда-нибудь надо было распаковать БОЛЬШИЕ архивы в Powershell DSC-конфигурациях (например, в процессе развертывания какого-нибудь ПО), вы вероятно сталкивались с проблемой, что распаковка с помощью ресурса Archive длится ОЧЕНЬ долго. И xArchive тоже не помогает - у него такие же проблемы.
Один из возможных вариантов для того, чтобы обойти ситуацию - это использовать 7zip или другую утилиту командной строки, используя ресурс DSC WindowsProcess, но учтите, что WindowsProcess только запустит ваш процесс распаковки, а потом сразу перейдет к следующей инструкции в конфигурации. Например вот:
WindowsProcess ExtractSolr { Path = "c:\distrib\7z\7za.exe"; Arguments = "x c:\distrib\solr\solr-6.3.0.zip -oc:\ -y"; } WindowsProcess ExtractJava { Path = "cmd.exe"; Arguments = "/C c:\distrib\7z\7za.exe x c:\distrib\java\server-jre-8u112-windows-x64.tar.gz -so | c:\distrib\7z\7za.exe x -aoa -si -ttar -oc:\java"; }
В этом примере Java будет распакована РАНЬШЕ, чем Solr. И если у вас есть зависимести в порядке разархивирования пакетов, то вы неизбежно столкнетесь с ошибками при развертывании конфигурации.
Поэтому я попытался разобраться со своими архивами следующим образом:
Script ExtractSolr { SetScript = { New-Item -Path "C:\solr-6.3.0" -ItemType Directory; Expand-Archive -Force -Path "c:\distrib\solr\solr-6.3.0.zip" -DestinationPath "C:\"; } TestScript = { (Test-Path -Path "C:\solr-6.3.0"); } GetScript = { #Do Nothing } }
Используя ресурс Script, любые последующие инструкции не будут выполняться, пока не закончит выполняться сам Script.
- Просмотров: 2430