Dela via


Expandera ett arkiv med standardfilvalidering och filöverskrivning tillåten

Description

Det här exemplet visar hur du kan använda resursen Archive för att se till att en .zip fil expanderas till en specifik katalog och att det expanderade innehållet matchar innehållet i .zip filen.

Med Se till inställt på Present, är sökvägen inställd på C:\ExampleArchivePath\Archive.zipoch Mål inställd C:\ExampleDestinationPath\Destinationpå expanderar resursen innehållet i Archive.zip till Destination mappen om de inte redan finns där.

Med Validate inställt på $true och Checksum inte inställt jämför resursen egenskapen LastWriteTime för varje expanderad fil med egenskapen LastWriteTime för relevant fil i Archive.zip. Om värdena för något innehåll i Destination mappen inte matchar värdet i Archive.zipär resursen inte i önskat tillstånd.

Med Force inställt på $trueskriver resursen över alla expanderade filer med en felaktig LastWriteTime. Om Force har angetts till $falsegenererar resursen ett undantag i stället för att skriva över filerna.

Med Invoke-DscResource

Det här skriptet visar hur du kan använda resursen Archive med cmdleten Invoke-DscResource för att säkerställa Archive.zip att den Destination expanderas till mappen med standardvalidering.

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

Med en konfiguration

Det här kodfragmentet visar hur du kan definiera en Configuration med ett Archive resursblock för att säkerställa Archive.zip att expanderas Destination till mappen med standardvalidering.

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