Share via


Instalar o arquivo MSI com a ID fornecida no caminho fornecido

Descrição

Este exemplo mostra como você pode usar o MsiPackage recurso para garantir que um pacote esteja instalado.

Com Ensure definido como Present, ProductID definido como {DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}, e Caminho definido como file://Examples/example.msi, o recurso instala o example.msi pacote se ele ainda não estiver instalado.

Se o pacote não estiver instalado e o example.msi arquivo não existir, o recurso gerará uma exceção quando impor o estado desejado.

Com Invoke-DscResource

Este script mostra como você pode usar o MsiPackage recurso com o Invoke-DscResource cmdlet para garantir que um pacote no sistema de arquivos local esteja instalado.

[CmdletBinding()]
param()

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

    $NonGetProperties = @(
        '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 ConfigurationMsiPackage bloco de recursos para garantir que um pacote no sistema de arquivos local esteja instalado.

Configuration InstallPackageFromFile {
    Import-DscResource -ModuleName 'PSDscResources'

    Node localhost {
        MsiPackage ExampleMsiPackage {
            ProductId = '{DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}'
            Path      = 'file://Examples/example.msi'
            Ensure    = 'Present'
        }
    }
}