Partager via


Installer le fichier MSI avec l’ID donné au chemin d’accès donné

Description

Cet exemple montre comment utiliser la MsiPackage ressource pour vérifier qu’un package est installé.

Avec l’option Vérifier définie Presentsur , ProductID{DEADBEEF-80C6-41E6-A1B9-8BDB8A05027F}définie sur , et Chemin d’accès défini file://Examples/example.msisur , la ressource installe le example.msi package s’il n’est pas déjà installé.

Si le package n’est pas installé et que le example.msi fichier n’existe pas, la ressource lève une exception lorsqu’elle applique l’état souhaité.

Avec Invoke-DscResource

Ce script montre comment utiliser la MsiPackage ressource avec l’applet Invoke-DscResource de commande pour vérifier qu’un package sur le système de fichiers local est installé.

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

Avec une configuration

Cet extrait de code montre comment définir un Configuration bloc MsiPackage de ressources pour vous assurer qu’un package sur le système de fichiers local est installé.

Configuration InstallPackageFromFile {
    Import-DscResource -ModuleName 'PSDscResources'

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