تثبيت ملف cab بالاسم المحدد من المسار المحدد

الوصف

يوضح هذا المثال كيف يمكنك استخدام WindowsPackageCab القيم التي يوفرها المستخدم للمورد لضمان تثبيت حزمة.

يجب تحديد اسم الحزمة مع المعلمة Name ، التي تعين خاصية Name للمورد.

يجب تحديد المسار إلى الملف الذي .cab يمكن تثبيت الحزمة منه باستخدام المعلمة SourcePath ، والتي تعين خاصية SourcePath للمورد.

يجب تحديد المسار إلى ملف سجل باستخدام المعلمة LogPath ، والتي تعين خاصية LogPath للمورد.

مع تعيين Ensure إلى Present، يتم تعيين خاصية Name إلى القيمة التي يوفرها المستخدم من المعلمة Name ، وتعيين SourcePath إلى القيمة التي يوفرها المستخدم من المعلمة SourcePath ، يقوم المورد بتثبيت الحزمة المسماة من الملف المحدد .cab إذا لم تكن مثبتة بالفعل.

مع تعيين LogPath إلى القيمة التي يوفرها المستخدم من المعلمة LogPath ، يكتب المورد السجلات لتثبيت الحزمة إلى هذا الملف بدلا من %WINDIR%\Logs\Dism\dism.log.

مع Invoke-DscResource

يوضح هذا البرنامج النصي كيفية استخدام WindowsPackageCab المورد مع Invoke-DscResource cmdlet لضمان تثبيت حزمة محددة من قبل المستخدم.

[CmdletBinding()]
param(
    [Parameter (Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    [String]
    $Name,

    [Parameter (Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    [String]
    $SourcePath,

    [Parameter(Mandatory = $true)]
    [ValidateNotNullOrEmpty()]
    [String]
    $LogPath
)

begin {
    $SharedParameters = @{
        Name       = 'WindowsPackageCab'
        ModuleName = 'PSDscResource'
        Properties = @{
            Name       = $Name
            Ensure     = 'Present'
            SourcePath = $SourcePath
            LogPath    = $LogPath
        }
    }

    $NonGetProperties = @(
        'Ensure'
        'SourcePath'
        'LogPath'
    )
}

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

مع تكوين

توضح هذه القصاصة البرمجية كيفية تعريف Configuration مع كتلة WindowsPackageCab موارد لضمان تثبيت حزمة محددة من قبل المستخدم.

هام

هناك قيود في تكوين الجهاز تمنع مورد DSC من استخدام أي أوامر cmdlets PowerShell غير مضمنة في PowerShell نفسه أو في وحدة نمطية في معرض PowerShell. يتم توفير هذا المثال لأغراض توضيحية، ولكن نظرا لأن مورد DSC يستخدم cmdlets من الوحدة النمطية DISM، والتي يتم شحنها كأحد وحدات Windows النمطية، فلن يعمل في تكوين الجهاز.

Configuration Install {
    param(
        [Parameter (Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String]
        $Name,

        [Parameter (Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String]
        $SourcePath,

        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [String]
        $LogPath
    )

    Import-DscResource -ModuleName 'PSDscResources'

    Node Localhost {
        WindowsPackageCab ExampleWindowsPackageCab {
            Name       = $Name
            Ensure     = 'Present'
            SourcePath = $SourcePath
            LogPath    = $LogPath
        }
    }
}