Compartir a través de


Expansión de un archivo con validación de archivos predeterminada y sobrescritura de archivos permitida

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 not set, el recurso compara la propiedad LastWriteTime de cada archivo expandido con la propiedad LastWriteTime del archivo pertinente en Archive.zip. Si los valores de cualquier contenido de la Destination carpeta no coinciden con el valor de Archive.zip, el recurso está fuera del estado deseado.

Con Force establecido en $true, el recurso sobrescribe los archivos expandidos con un valor LastWriteTime incorrecto. 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 carpeta con la Destination validación predeterminada.

[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 objeto con un Archive bloque de recursos para asegurarse de que Archive.zip se expande a la carpeta con la Destination validación predeterminada.

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