Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: Windows PowerShell 4.0, Windows PowerShell 5.0
Le configurazioni DSC sono script di PowerShell che definiscono un tipo speciale di funzione. Per definire una configurazione, usare la parola chiave di PowerShell Configuration.
Configuration MyDscConfiguration {
Node "TEST-PC1" {
WindowsFeature MyFeatureInstance {
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance {
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Salvare lo script come .ps1 file.
Sintassi di configurazione
Uno script di configurazione è costituito dalle parti seguenti:
- Il blocco Configurazione . Questo è il blocco di script più esterno. Per definirlo, utilizzare la parola chiave Configuration e specificare un nome. In questo caso, il nome della configurazione è
MyDscConfiguration. - Uno o più blocchi di nodi . Questi definiscono i nodi (computer o macchine virtuali) che si stanno configurando.
Nella configurazione precedente, è presente un blocco Node destinato a un computer denominato
TEST-PC1. Il blocco Node può accettare più nomi di computer. - Uno o più blocchi di risorse. In questa sezione la configurazione imposta le proprietà per le risorse che sta configurando. In questo caso, sono presenti due blocchi di risorse, ognuno dei quali chiama la risorsa WindowsFeature .
Annotazioni
La risorsa DSC WindowsFeature è disponibile solo nei computer Windows Server. Per i computer con un sistema operativo client, ad esempio Windows 11, è necessario usare WindowsOptionalFeature . Per altre informazioni, vedere la sezione "WindowsOptionalFeature" della documentazione di PSDscResources.
All'interno di un blocco di configurazione , è possibile eseguire tutte le operazioni normalmente possibili in una funzione di PowerShell. Nell'esempio precedente, se non si desidera impostare come hardcoded il nome del computer di destinazione nella configurazione, è possibile aggiungere un parametro per il nome del nodo.
In questo esempio viene specificato il nome del nodo passandolo come parametro ComputerName durante la compilazione della configurazione. Per impostazione predefinita, il nome è localhost.
Configuration MyDscConfiguration
{
param
(
[string[]]$ComputerName='localhost'
)
Node $ComputerName
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Il blocco Node può anche accettare più nomi di computer. Nell'esempio precedente, è possibile utilizzare il -ComputerName parametro o passare un elenco di computer separati da virgole direttamente al blocco Node .
MyDscConfiguration -ComputerName "localhost", "Server01"
Quando si specifica un elenco di computer per il blocco Node , dall'interno di una configurazione, è necessario utilizzare la notazione array.
Configuration MyDscConfiguration
{
Node @('localhost', 'Server01')
{
WindowsFeature MyFeatureInstance
{
Ensure = 'Present'
Name = 'RSAT'
}
WindowsFeature My2ndFeatureInstance
{
Ensure = 'Present'
Name = 'Bitlocker'
}
}
}
MyDscConfiguration
Compilazione della configurazione
Prima di poter eseguire una configurazione, è necessario compilarla in un documento MOF. A tale scopo, chiamare la configurazione come si chiamerebbe una funzione di PowerShell. L'ultima riga dell'esempio, contenente solo il nome della configurazione, chiama la configurazione.
Annotazioni
Per chiamare una configurazione, la funzione deve trovarsi nell'ambito globale (come con qualsiasi altra funzione di PowerShell). È possibile fare in modo che ciò accada eseguendo lo script utilizzando F5 o facendo clic sul pulsante Esegui script nell'ISE. Per eseguire l'origine del punto dello script, eseguire il comando . .\myConfig.ps1 where myConfig.ps1 è il nome del file di script che contiene la configurazione.
Quando si chiama la configurazione:
- Risolve tutte le variabili
- Crea una cartella nella directory corrente con lo stesso nome della configurazione.
- Crea un file denominato NomeNodo.mof nella nuova directory, dove NomeNodo è il nome del nodo di destinazione della configurazione. Se sono presenti più nodi, verrà creato un file MOF per ogni nodo.
Annotazioni
Il file MOF contiene tutte le informazioni di configurazione per il nodo di destinazione. Per questo motivo, è importante tenerlo al sicuro. Per altre informazioni, vedere Protezione del file MOF.
La compilazione della prima configurazione precedente comporta la seguente struttura di cartelle:
. .\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
Se la configurazione accetta un parametro, come nel secondo esempio, questo deve essere fornito in fase di compilazione. Ecco come apparirebbe:
. .\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
Utilizzo di nuove risorse nella configurazione
Se sono stati eseguiti gli esempi precedenti, è possibile notare che è stato visualizzato un avviso relativo all'utilizzo di una risorsa senza importarla in modo esplicito. Oggi, DSC viene fornito con 12 risorse come parte del modulo PSDesiredStateConfiguration.
Il cmdlet, Get-DscResource, può essere utilizzato per determinare quali risorse sono installate nel sistema e disponibili per l'utilizzo da parte di Gestione configurazione locale.
Una volta che questi moduli sono stati inseriti $env:PSModulePath e sono stati riconosciuti correttamente da Get-DscResource, devono comunque essere caricati all'interno della configurazione.
Import-DscResource è una parola chiave dinamica che può essere riconosciuta solo all'interno di un blocco di configurazione , non è un cmdlet. Import-DscResource supporta due parametri:
- ModuleName è il metodo consigliato per l'utilizzo di Import-DscResource. Accetta il nome del modulo che contiene le risorse da importare (nonché una matrice di stringhe di nomi di moduli).
- Nome è il nome della risorsa da importare. Non si tratta del nome descrittivo restituito come "Name" da Get-DscResource, ma del nome della classe utilizzato durante la definizione dello schema della risorsa (restituito come ResourceType da Get-DscResource).
Per ulteriori informazioni sull'utilizzo di Import-DSCResource, vedere Utilizzo di Import-DSCResource
Differenze tra PowerShell v4 e v5
Esistono differenze nella posizione in cui devono essere archiviate le risorse DSC in PowerShell 4.0. Per ulteriori informazioni, vedere Posizione delle risorse.