Share via


Erweitern eines Archivs mit standardmäßiger Dateiüberprüfung und zulässiger Dateiüberschreibung

Beschreibung

In diesem Beispiel wird gezeigt, wie Sie die Archive Ressource verwenden können, um sicherzustellen, dass eine .zip Datei auf ein bestimmtes Verzeichnis erweitert wird und die erweiterten Inhalte mit den Inhalten in der .zip Datei übereinstimmen.

Mit "Stellen Sie sicher, Presentdass "Pfad" auf " festgelegt ist" und auf "Ziel" festgelegt C:\ExampleDestinationPath\DestinationC:\ExampleArchivePath\Archive.zipist, erweitert die Ressource den Inhalt Archive.zip des Destination Ordners, wenn sie noch nicht vorhanden sind.

Wenn " Validate " auf " und $true " Checksum " nicht festgelegt ist, vergleicht die Ressource die LastWriteTime-Eigenschaft jeder erweiterten Datei mit der LastWriteTime-Eigenschaft der relevanten Datei in Archive.zip. Wenn die Werte für inhalte im Destination Ordner nicht mit dem Wert übereinstimmen Archive.zip, liegt die Ressource außerhalb des gewünschten Zustands.

Mit force set to $true, the resource overwrites any expanded files with an falsch LastWriteTime. Wenn Force auf $false"Force" festgelegt wurde, löst die Ressource eine Ausnahme aus, anstatt die Dateien zu überschreiben.

Mit Invoke-DscResource

Dieses Skript zeigt, wie Sie die Archive Ressource mit dem Invoke-DscResource Cmdlet verwenden können, um sicherzustellen Archive.zip , dass der Ordner mit der Standardüberprüfung erweitert Destination wird.

[CmdletBinding()]
param()

begin {
    $SharedParameters = @{
        Name       = 'Archive'
        ModuleName = 'PSDscResource'
        Properties = @{
            Path        = 'C:\ExampleArchivePath\Archive.zip'
            Destination = 'C:\ExampleDestinationPath\Destination'
            Validate    = $true
            Force       = $true
            Ensure      = 'Present'
        }
    }

    $NonGetProperties = @(
        'Validate'
        'Force'
        'Ensure'
    )
}

process {
    $TestResult = Invoke-DscResource -Method Test @SharedParameters

    if ($TestResult.InDesiredState) {
        $QueryParameters = $SharedParameters.Clone()

        foreach ($Property in $NonGetProperties) {
            $QueryParameters.Properties.Remove($Property)
        }

        Invoke-DscResource -Method Get @QueryParameters
    } else {
        Invoke-DscResource -Method Set @SharedParameters
    }
}

Mit einer Konfiguration

Dieser Codeausschnitt zeigt, wie Sie einen ConfigurationArchive Ressourcenblock definieren können, um sicherzustellen Archive.zip , dass der Ordner mit Standardüberprüfung erweitert Destination wird.

Configuration ExpandArchiveDefaultValidationAndForce {
    Import-DscResource -ModuleName 'PSDscResources'

    Node localhost {
        Archive ExampleArchive {
            Path        = 'C:\ExampleArchivePath\Archive.zip'
            Destination = 'C:\ExampleDestinationPath\Destination'
            Validate    = $true
            Force       = $true
            Ensure      = 'Present'
        }
    }
}