Compartir a través de


Expansión de un archivo con la validación de archivos SHA-256 y la sobrescritura de archivos permitidas

Descripción

En este ejemplo se muestra cómo puede usar el Archive recurso para asegurarse de que un .zip archivo se expande a un directorio específico y el contenido expandido coincide con el contenido del .zip archivo.

Con Ensure establecido en Present, la ruta de acceso establecida C:\ExampleArchivePath\Archive.zipen y destination establecidoC:\ExampleDestinationPath\Destinationen , el recurso expande el contenido de Archive.zip a la Destination carpeta si aún no están allí.

Con Validate establecido en $true y Checksum establecido SHA-256en , el recurso compara la suma de comprobación SHA256 de cada archivo expandido con el archivo pertinente en Archive.zip. Si la suma de comprobación de cualquier archivo expandido no coincide con la suma de comprobación de ese archivo en Archive.zip, el recurso está fuera del estado deseado.

Con Force establecido en $true, el recurso sobrescribe los archivos expandidos con una suma de comprobación incorrecta. Si Force se estableció en $false, el recurso produciría una excepción en lugar de sobrescribir los archivos.

Con Invoke-DscResource

Este script muestra cómo puede usar el Archive recurso con el Invoke-DscResource cmdlet para asegurarse de que Archive.zip se expande a la Destination carpeta con validación de suma de comprobación 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
    }
}

Con una configuración

Este fragmento de código muestra cómo se puede definir un Configuration con un Archive bloque de recursos para asegurarse de que Archive.zip se expande a la Destination carpeta con validación de suma de comprobación 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'
        }
    }
}