È possibile creare un file di configurazione generalizzato per l'installazione delle funzionalità di Windows usando PowerShell?


8

Attualmente sto cercando di automatizzare la creazione di una macchina virtuale che esegue Windows Server 2012 R2. Al momento la sfida è automatizzare l'aggiunta di ruoli e funzionalità. All'interno della procedura guidata per ruoli e funzionalità è disponibile un'opzione per esportare un file di configurazione XML che può essere eseguito in PowerShell.

Tuttavia, dopo aver esaminato il file XML, posso vedere che è specifico per il server su cui è in esecuzione - contiene campi come "NomeComputer".

Cosa succede se desidero eseguire uno script che installa ruoli e funzionalità su molte macchine virtuali? Ho bisogno di un file di configurazione generalizzato, non personalizzato per un computer specifico.

Qualcuno ha un input su questo problema?

Risposte:


12

Sì, sia per Linux che per Windows è possibile creare i file di configurazione dello stato desiderati che possono:

  • Abilita o disabilita i ruoli e le funzionalità del server
  • Gestire le impostazioni del registro
  • Gestisci file e directory
  • Avvia, arresta e gestisci processi e servizi
  • Gestisci gruppi e account utente
  • Distribuisci nuovo software
  • Gestire le variabili di ambiente
  • Esegui script di Windows PowerShell
  • Correggi una configurazione che si è allontanata dallo stato desiderato
  • Scopri lo stato di configurazione effettivo su un determinato nodo

Ecco un file di configurazione di esempio che abiliterà IIS, assicurerà che i file del sito Web siano nella cartella giusta e, se una di queste cose non è installata o mancante, per installarli o copiarli nel modo appropriato (si presume che $ websitefilepath sia presunto essere predefinito come fonte per i file del sito Web):

    Configuration MyWebConfig
    {
       # A Configuration block can have zero or more Node blocks
       Node "Myservername"
       {
          # Next, specify one or more resource blocks

          # WindowsFeature is one of the built-in resources you can use in a Node block
          # This example ensures the Web Server (IIS) role is installed
          WindowsFeature MyRoleExample
          {
              Ensure = "Present" # To uninstall the role, set Ensure to "Absent"
              Name = "Web-Server"
          }

          # File is a built-in resource you can use to manage files and directories
          # This example ensures files from the source directory are present in the destination directory
          File MyFileExample
          {
             Ensure = "Present"  # You can also set Ensure to "Absent"
             Type = "Directory“ # Default is “File”
             Recurse = $true
             # This is a path that has web files
             SourcePath = $WebsiteFilePath
             # The path where we want to ensure the web files are present
             DestinationPath = "C:\inetpub\wwwroot"
   # This ensures that MyRoleExample completes successfully before this block runs
            DependsOn = "[WindowsFeature]MyRoleExample"
          }
       }
    }

Per ulteriori dettagli, vedere Panoramica della configurazione dello stato desiderato di Windows PowerShell e Introduzione alla configurazione dello stato desiderato di Windows PowerShell .

Quindi perché dovresti usare questo invece del semplice cmdlet install-windowsfeature? Il vero potere di usare DSC invece di uno script è che posso definire una posizione in cui posso memorizzare le configurazioni da cui spingere o da cui estrarre (rispetto alla macchina target) vedi Modalità di configurazione Push and Pull . Alla configurazione non importa se la macchina è fisica o virtuale, ma credo che ci voglia almeno il 2012 per avviare il server per avviare DSC.


6

Puoi fare tutto in PowerShell

Get-WindowsFeature | ? { $_.Installed } | Export-Clixml .\installed.xml

Copia l'xml dove deve andare, da qualche parte in cui il nuovo server può accedervi.

Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature

0
Import-Module servermanager
Install-WindowsFeature Feature,
    Feature, 
    Feature, 
    etc

Quanto sopra installerà un elenco di funzionalità. Puoi codificarli o semplicemente salvarli in un file, uno per riga, e quindi utilizzarli per installarli:

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features

Per il server 2012r2 è Install-WindowsFeature
Drifter104

Ah. Utilizziamo principalmente il 2008, quindi non ne ero a conoscenza. Grazie per la segnalazione.
Deadly-Bagel,

Quando si utilizza la GUI per installare i ruoli, è necessario effettuare alcune configurazioni utilizzando i menu a discesa: come vengono configurati quando impostati tramite PowerShell usando il metodo? Sono tutti impostati sui valori predefiniti?
Cameron McAuley,

Hmm. In tal caso sembra che sia necessario utilizzare il -configurationfilepathparametro e puntarlo a un file di configurazione esportato menzionato nel proprio OP. Un po 'strano contiene informazioni specifiche per PC come hai detto, ma tutte le prove indicano che lo installerà sul computer locale per impostazione predefinita e puntandolo a uno di quei file configurerà tutto come necessario, quindi probabilmente non viene utilizzato. Potrebbe essere solo un riferimento per quale computer hai ottenuto la configurazione o qualcosa del genere.
Deadly-Bagel,

Ma sì, utilizzerà le opzioni predefinite senza il file.
Deadly-Bagel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.