Entpacken großer Archive in Powershell DSC-Konfigurationen

Entpacken großer Archive in Powershell DSC-Konfigurationen

Wenn Sie jemals brauchen, um große Archivdateien in Powershell DSC-Konfigurationen entpacken (während der Installation einige Software), werden Sie möglicherweise stecken bleiben, weil mit Archive-Ressource ist nicht geeignet für diese Aufgabe, da es sehr langsam ist. xArchive hilft auch nicht.

Eine mögliche Lösung besteht darin, es mit 7zip oder einem anderen Befehlszeilenprogramm unter Verwendung der WindowsProcess-Ressource zu entpacken, aber gewarnt werden, dass WindowsProcess gerade den Prozess startet und dann zur nächsten Anweisung in Ihrer Konfiguration gehen wird. Siehe Beispiel:

 

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";
}

In diesem speziellen Fall wird Java früher als Solr extrahiert werden. Wenn Sie wichtige Abhängigkeiten in Ihrem Code haben, führt dies zu Fehlern.

Also, ich habe das Problem auf folgende Weise behandelt:

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                
    }
}

Mit Script-Ressource werden alle nachfolgenden Anweisungen nicht ausgeführt.

Tags: powershell (de), dsc (de)

Drucken