¿Es posible crear un archivo de configuración generalizada para instalar las características de Windows usando PowerShell?

8

Actualmente estoy tratando de automatizar la compilación de una VM que ejecuta Windows Server 2012 R2. Por el momento, el desafío es automatizar la adición de roles y características. Dentro del asistente de roles y características hay una opción para exportar un archivo de configuración XML que se puede ejecutar en PowerShell.

Sin embargo, después de mirar el archivo XML, puedo ver que es específico del servidor en el que se ejecuta: contiene campos como "ComputerName".

¿Qué sucede si quiero ejecutar un script que instala roles y características en muchas máquinas virtuales? Necesito un archivo de configuración generalizado, no personalizado para una computadora específica.

¿Alguien tiene alguna opinión sobre este tema?

Cameron McAuley
fuente

Respuestas:

12

Sí, tanto para Linux como para Windows, puede crear los archivos de configuración de estado deseados que pueden:

  • Habilitar o deshabilitar funciones y funciones del servidor
  • Administrar la configuración del registro
  • Administrar archivos y directorios
  • Iniciar, detener y administrar procesos y servicios.
  • Administrar grupos y cuentas de usuario.
  • Implementar nuevo software
  • Administrar variables de entorno
  • Ejecute scripts de Windows PowerShell
  • Arregla una configuración que se ha alejado del estado deseado
  • Descubre el estado de configuración real en un nodo dado

Aquí hay un archivo de configuración de muestra que habilitará IIS, asegurará que los archivos del sitio web estén en la carpeta correcta y, si alguna de estas cosas no está instalada o falta, para instalarlos o copiarlos según corresponda (tenga en cuenta que se presume que $ websitefilepath es predefinido como la fuente de los archivos del sitio 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"
          }
       }
    }

Para obtener más detalles, consulte la Descripción general de la configuración del estado deseado de Windows PowerShell y comience con la configuración del estado deseado de Windows PowerShell .

Entonces, ¿por qué usaría esto en lugar de simplemente el cmdlet install-windowsfeature? El verdadero poder de usar DSC en lugar de un script es que puedo definir una ubicación donde puedo almacenar configuraciones para ser empujadas o retiradas (con respecto a la máquina de destino), vea Modos de configuración de inserción y extracción . A la configuración no le importa si la máquina es física o virtual, pero creo que se necesita al menos 2012 para que el servidor arranque para extraer DSC.

Jim B
fuente
6

Puedes hacerlo todo en PowerShell

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

Copie el xml donde debe ir, en algún lugar donde el nuevo servidor pueda acceder.

Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature
Drifter104
fuente
0
Import-Module servermanager
Install-WindowsFeature Feature,
    Feature, 
    Feature, 
    etc

Lo anterior instalará una lista de características. Puede codificarlos o simplemente guardarlos en un archivo, uno por línea, y luego usar esto para instalarlos:

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features
Bagel mortal
fuente
Para el servidor 2012r2 es Install-WindowsFeature
Drifter104
Ah Principalmente usamos 2008, así que no estaba al tanto. Gracias por señalar eso.
Deadly-Bagel
Al usar la GUI para instalar roles, hay algunas configuraciones que debe realizar con los menús desplegables: ¿cómo se configuran cuando se configura a través de Powershell con su método? ¿Están todos establecidos a sus valores predeterminados?
Cameron McAuley
Hmm En ese caso, parece que necesita usar el -configurationfilepathparámetro y apuntarlo a un archivo de configuración exportado que mencionó en su OP. Un poco extraño, contiene información específica de la PC, como dijiste, pero todas las pruebas apuntan a que lo instalará en la computadora local de forma predeterminada y señalarlo a uno de esos archivos configurará todo según sea necesario, por lo que probablemente no se use. Podría ser solo una referencia de qué computadora obtuviste la configuración o algo así.
Deadly-Bagel
Pero sí, usará las opciones predeterminadas sin el archivo.
Deadly-Bagel