Delen via


Een archief uitbreiden met SHA-256-bestandsvalidatie en toegestaan bestand overschrijven

Description

In dit voorbeeld ziet u hoe u de Archive resource kunt gebruiken om ervoor te zorgen dat een .zip bestand wordt uitgebreid naar een specifieke map en dat de uitgebreide inhoud overeenkomt met de inhoud in het .zip bestand.

Met Ensure ingesteld op Present, het pad ingesteld op C:\ExampleArchivePath\Archive.zip, en de bestemming ingesteld C:\ExampleDestinationPath\Destinationop , de resource wordt de inhoud van Archive.zip de Destination map uitgebreid als ze er nog niet zijn.

Met Validate ingesteld op $true en Checksum ingesteld SHA-256op, vergelijkt de resource de SHA256-controlesom van elk uitgevouwen bestand ten opzichte van het relevante bestand in Archive.zip. Als de controlesom voor een uitgevouwen bestand niet overeenkomt met de controlesom van dat bestand Archive.zip, heeft de resource de gewenste status.

Als force is ingesteld $trueop, overschrijft de resource alle uitgebreide bestanden met een onjuiste controlesom. Als Force is ingesteld op $false, zou de resource een uitzondering genereren in plaats van de bestanden te overschrijven.

Met Invoke-DscResource

Dit script laat zien hoe u de Archive resource met de Invoke-DscResource cmdlet kunt gebruiken om ervoor te zorgen dat Archive.zip deze wordt uitgebreid naar de Destination map met SHA256-controlesomvalidatie.

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

Met een configuratie

Dit fragment laat zien hoe u een Configuration met een Archive resourceblok kunt definiƫren om ervoor te zorgen dat Archive.zip deze wordt uitgebreid naar de Destination map met SHA256-controlesomvalidatie.

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