Expandir um arquivo com validação de arquivo SHA-256 e substituição de arquivo permitida

Descrição

Este exemplo mostra como você pode usar o Archive recurso para garantir que um .zip arquivo seja expandido para um diretório específico e que o conteúdo expandido corresponda ao conteúdo do .zip arquivo.

Com Ensure definido como Present, o caminho definido como C:\ExampleArchivePath\Archive.zip, e o destino definido como C:\ExampleDestinationPath\Destination, o recurso expande o conteúdo da Archive.zipDestination pasta se eles ainda não estiverem lá.

Com Validate definido como $true e Soma de Verificação definido como SHA-256, o recurso compara a soma de verificação SHA256 de cada arquivo expandido com o arquivo relevante em Archive.zip. Se a soma de verificação de qualquer arquivo expandido não corresponder à soma de verificação desse arquivo, Archive.zipo recurso estará fora do estado desejado.

Com Force definido como $true, o recurso substitui todos os arquivos expandidos com uma soma de verificação incorreta. Se Force foi definido como $false, o recurso lançaria uma exceção em vez de substituir os arquivos.

Com Invoke-DscResource

Este script mostra como você pode usar o Archive recurso com o Invoke-DscResource cmdlet para garantir Archive.zip que seja expandido para a pasta com validação Destination de soma de verificação SHA256.

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

Com uma configuração

Este snippet mostra como você pode definir um com um ConfigurationArchive bloco de recursos para garantir Archive.zip que seja expandido para a pasta com validação Destination de soma de verificação SHA256.

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