Share via


지정된 HTTPS URL에서 지정된 ID를 사용하여 MSI 파일 제거

설명

이 예제에서는 리소스를 사용하여 패키지가 MsiPackage 설치되지 않았는지 확인하는 방법을 보여줍니다.

EnsureAbsent로 설정하고 ProductID{DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}설정하고 경로를 설정file://contoso.com/example.msi하면 리소스가 example.msi 설치된 경우 패키지를 제거합니다.

패키지가 설치된 경우 리소스가 원하는 상태를 적용할 때부터 리소스가 다운로드 https://contoso.com/example.msi 합니다. 다운로드에 실패하면 리소스가 예외를 throw합니다.

Invoke-DscResource

이 스크립트는 cmdlet과 MsiPackage 함께 리소스를 Invoke-DscResource 사용하여 웹 URI에 패키지가 설치되지 않도록 하는 방법을 보여 주세요.

[CmdletBinding()]
param()

begin {
    $SharedParameters = @{
        Name       = 'MsiPackage'
        ModuleName = 'PSDscResource'
        Properties = @{
            ProductId = '{DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}'
            Path      = 'https://contoso.com/example.msi'
            Ensure    = 'Absent'
        }
    }

    $NonGetProperties = @(
        'Ensure'
        'MembersToInclude'
    )
}

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

구성을 사용하여

이 코드 조각에서는 리소스 블록을 사용하여 ConfigurationMsiPackage 정의하여 웹 URI에 패키지가 설치되지 않도록 하는 방법을 보여줍니다.

Configuration UninstallPackageFromHttps {
    Import-DscResource -ModuleName 'PSDscResources'

    Node localhost {
        MsiPackage ExampleMsiPackage {
            ProductId = '{DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}'
            Path      = 'https://contoso.com/example.msi'
            Ensure    = 'Absent'
        }
    }
}