Konfigurasi DSC

Berlaku Untuk: Windows PowerShell 4.0, Windows PowerShell 5.0

Konfigurasi DSC adalah skrip PowerShell yang menentukan jenis fungsi khusus. Untuk menentukan konfigurasi, Anda menggunakan Konfigurasi kata kunci PowerShell.

Configuration MyDscConfiguration {
    Node "TEST-PC1" {
        WindowsFeature MyFeatureInstance {
            Ensure = 'Present'
            Name = 'RSAT'
        }
        WindowsFeature My2ndFeatureInstance {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}
MyDscConfiguration

Simpan skrip sebagai .ps1 file.

Sintaks konfigurasi

Skrip konfigurasi terdiri dari bagian-bagian berikut:

  • Blok Konfigurasi. Ini adalah blok skrip terluar. Anda menentukannya menggunakan kata kunci Konfigurasi dan memberikan nama. Dalam hal ini, nama konfigurasinya adalah MyDscConfiguration.
  • Satu atau beberapa blok Simpul. Ini menentukan simpul (komputer atau VM) yang Anda konfigurasi. Dalam konfigurasi di atas, ada satu blok Node yang menargetkan komputer bernama TEST-PC1. Blok Simpul dapat menerima beberapa nama komputer.
  • Satu atau beberapa blok sumber daya. Di sinilah konfigurasi mengatur properti untuk sumber daya yang dikonfigurasinya. Dalam hal ini, ada dua blok sumber daya, yang masing-masing memanggil sumber daya WindowsFeature .

Catatan

Sumber Daya DSC WindowsFeature hanya tersedia di komputer Windows Server. Untuk komputer dengan OS klien, seperti Windows 11, Anda perlu menggunakan WindowsOptionalFeature sebagai gantinya. Untuk informasi selengkapnya, lihat bagian "WindowsOptionalFeature" dari dokumentasi PSDscResources.

Dalam blok Konfigurasi , Anda dapat melakukan apa pun yang biasanya Anda bisa dalam fungsi PowerShell. Dalam contoh sebelumnya, jika Anda tidak ingin melakukan hard code nama komputer target dalam konfigurasi, Anda dapat menambahkan parameter untuk nama simpul.

Dalam contoh ini, Anda menentukan nama simpul dengan meneruskannya sebagai parameter ComputerName saat Anda mengkompilasi konfigurasi. Nama default ke localhost.

Configuration MyDscConfiguration
{
    param
    (
        [string[]]$ComputerName='localhost'
    )

    Node $ComputerName
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Blok Node juga dapat menerima beberapa nama komputer. Dalam contoh di atas, Anda dapat menggunakan -ComputerName parameter , atau meneruskan daftar komputer yang dipisahkan koma langsung ke blok Node .

MyDscConfiguration -ComputerName "localhost", "Server01"

Saat menentukan daftar komputer ke blok Node , dari dalam Konfigurasi, Anda perlu menggunakan array-notation.

Configuration MyDscConfiguration
{
    Node @('localhost', 'Server01')
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Mengkompilasi konfigurasi

Sebelum Anda dapat memberlakukan konfigurasi, Anda harus mengkompilasinya ke dalam dokumen MOF. Anda melakukan ini dengan memanggil konfigurasi seperti anda akan memanggil fungsi PowerShell. Baris terakhir dari contoh yang hanya berisi nama konfigurasi, memanggil konfigurasi.

Catatan

Untuk memanggil konfigurasi, fungsi harus berada dalam cakupan global (seperti halnya fungsi PowerShell lainnya). Anda dapat melakukan ini baik dengan "dot-sourcing" skrip, atau dengan menjalankan skrip konfigurasi dengan menggunakan F5 atau mengklik tombol Jalankan Skrip di ISE. Untuk sumber titik skrip, jalankan perintah . .\myConfig.ps1 di mana myConfig.ps1 adalah nama file skrip yang berisi konfigurasi Anda.

Saat Anda memanggil konfigurasi, konfigurasi tersebut:

  • Menyelesaikan semua variabel
  • Membuat folder di direktori saat ini dengan nama yang sama dengan konfigurasi.
  • Membuat file bernama NodeName.mof di direktori baru, di mana NodeName adalah nama simpul target konfigurasi. Jika ada lebih dari satu simpul, file MOF akan dibuat untuk setiap simpul.

Catatan

File MOF berisi semua informasi konfigurasi untuk simpul target. Karena itu, penting untuk menjaganya tetap aman. Untuk informasi selengkapnya, lihat Mengamankan file MOF.

Mengkompilasi konfigurasi pertama di atas menghasilkan struktur folder berikut:

. .\MyDscConfiguration.ps1
MyDscConfiguration
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 localhost.mof

Jika konfigurasi mengambil parameter, seperti dalam contoh kedua, yang harus disediakan pada waktu kompilasi. Berikut tampilannya:

. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 MyTestNode.mof

Menggunakan sumber daya baru di konfigurasi Anda

Jika Anda menjalankan contoh sebelumnya, Anda mungkin telah memperhatikan bahwa Anda diperingatkan bahwa Anda menggunakan sumber daya tanpa mengimpornya secara eksplisit. Saat ini, DSC dikirim dengan 12 sumber daya sebagai bagian dari modul PSDesiredStateConfiguration.

Cmdlet, Get-DscResource, dapat digunakan untuk menentukan sumber daya apa yang diinstal pada sistem dan tersedia untuk digunakan oleh LCM. Setelah modul ini ditempatkan $env:PSModulePath dan dikenali dengan benar oleh Get-DscResource, modul ini masih perlu dimuat dalam konfigurasi Anda.

Import-DscResource adalah kata kunci dinamis yang hanya dapat dikenali dalam blok Konfigurasi , itu bukan cmdlet. Import-DscResource mendukung dua parameter:

  • ModuleName adalah cara yang disarankan untuk menggunakan Import-DscResource. Ini menerima nama modul yang berisi sumber daya yang akan diimpor (serta array string nama modul).
  • Nama adalah nama sumber daya yang akan diimpor. Ini bukan nama yang mudah diingat yang dikembalikan sebagai "Nama" oleh Get-DscResource, tetapi nama kelas yang digunakan saat menentukan skema sumber daya (dikembalikan sebagai ResourceType oleh Get-DscResource).

Untuk informasi selengkapnya tentang menggunakan Import-DSCResource, lihat Menggunakan Import-DSCResource

Perbedaan PowerShell v4 dan v5

Ada perbedaan di mana sumber daya DSC perlu disimpan di PowerShell 4.0. Untuk informasi selengkapnya, lihat Lokasi sumber daya.

Lihat juga