다음을 통해 공유


기본 파일 유효성 검사 및 파일 덮어쓰기가 허용된 보관 파일 확장

설명

이 예제에서는 리소스를 Archive 사용하여 파일이 특정 디렉터리로 .zip 확장되고 확장된 콘텐츠가 파일의 내용과 일치하는지 확인하는 방법을 보여 줍니다 .zip .

Ensure를 설정Present, 경로C:\ExampleArchivePath\Archive.zip설정 및 대상을 설정C:\ExampleDestinationPath\Destination하면 리소스는 폴더의 Archive.zip 내용이 아직 없는 경우 폴더로 Destination 확장합니다.

유효성 검사를 설정하고 $true체크섬을 설정하지 않은 상태에서 리소스는 확장된 모든 파일의 LastWriteTime 속성을 관련 파일Archive.zipLastWriteTime 속성과 비교합니다. 폴더의 콘텐츠 값이 Destination 해당 값 Archive.zip과 일치하지 않으면 리소스가 원하는 상태가 아닙니다.

Force를 설정하면 $true리소스는 확장된 모든 파일을 잘못된 LastWriteTime으로 덮어씁니다. Force가 설정된 $false경우 리소스는 파일을 덮어쓰는 대신 예외를 throw합니다.

Invoke-DscResource

이 스크립트는 cmdlet과 함께 리소스를 ArchiveInvoke-DscResource 사용하여 기본 유효성 검사를 통해 폴더로 확장되도록 하는 Archive.zipDestination 방법을 보여 있습니다.

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

구성을 사용하는 경우

이 코드 조각은 기본 유효성 검사를 사용하여 폴더로 확장 Destination 되도록 Archive.zip 리소스 블록을 사용하여 정의하는 Configuration 방법을 보여줍니다.Archive

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