تمكين ميزة Windows الاختيارية المحددة وسجلات الإخراج إلى المسار المحدد

الوصف

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

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

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

مع تعيين التأكد إلى Present وتعيين الخاصية Name إلى القيمة التي يوفرها المستخدم من المعلمة FeatureName ، يمكن المورد ميزة Windows الاختيارية المحددة إذا تم تعطيلها.

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

مع Invoke-DscResource

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

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

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

begin {
    $SharedParameters = @{
        Name       = 'WindowsOptionalFeature'
        ModuleName = 'PSDscResource'
        Properties = @{
            Name    = $FeatureName
            Ensure  = 'Present'
            LogPath = $LogPath
        }
    }

    $NonGetProperties = @(
        'Ensure'
        '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 مع كتلة WindowsOptionalFeature موارد لضمان تمكين ميزة محددة من قبل المستخدم.

هام

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

Configuration Enable {
    param(
        [Parameter (Mandatory = $true)]
        [String]
        $FeatureName,

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

    Import-DscResource -ModuleName 'PSDscResources'

    Node Localhost {
        WindowsOptionalFeature TelnetClient {
            Name    = $FeatureName
            Ensure  = 'Present'
            LogPath = $LogPath
        }
    }
}