É possível criar um arquivo de configuração generalizado para instalar recursos do Windows usando o PowerShell?

8

Atualmente, estou tentando automatizar a criação de uma VM executando o Windows Server 2012 R2. No momento, o desafio é automatizar a adição de funções e recursos. Dentro do assistente de funções e recursos, há uma opção para exportar um arquivo de configuração XML que pode ser executado no PowerShell.

No entanto, depois de examinar o arquivo XML, posso ver que ele é específico para o servidor em que está sendo executado - ele contém campos como "NomeDoComputador".

E se eu quiser executar um script que instale funções e recursos em muitas VMs? Preciso de um arquivo de configuração generalizado, não personalizado para um computador específico.

Alguém tem alguma opinião sobre esse problema?

    
por CameronM34 04.09.2015 / 15:03

3 respostas

11

Sim, para Linux e Windows, você pode criar arquivos de configuração de estado desejados que possam:

  • Ativar ou desativar funções e recursos de servidor
  • Gerenciar configurações de registro
  • Gerenciar arquivos e diretórios
  • Iniciar, interromper e gerenciar processos e serviços
  • Gerenciar grupos e contas de usuário
  • Implantar novo software
  • Gerenciar variáveis de ambiente
  • Executar scripts do Windows PowerShell
  • Corrigir uma configuração que se afastou do estado desejado
  • Descubra o estado atual da configuração em um determinado nó

Aqui está um exemplo de arquivo de configuração que habilitará o IIS, garantirá que os arquivos do site estejam na pasta correta e, se algum desses itens não estiver instalado ou ausente, para instalá-los ou copiá-los conforme apropriado (observe que $ websitefilepath é presume-se ser predefinido como a fonte para os arquivos do site):

    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 obter mais detalhes, consulte Visão geral da configuração de estado desejado do Windows PowerShell e Introdução à Configuração do estado desejado do Windows PowerShell .

Então, por que você usaria isso em vez de simplesmente o cmdlet install-windowsfeature? O poder real de usar o DSC em vez de um script é que eu posso definir um local onde eu possa armazenar configurações para serem enviadas ou empurradas (com relação à máquina de destino), veja Pressione e puxe os modos de configuração . A configuração não se importa se a máquina é física ou virtual, mas acredito que seja necessário pelo menos 2012 para que o servidor inicialize para extrair o DSC.

    
por 04.09.2015 / 15:50
6

Você pode fazer tudo no PowerShell

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

Copie o xml para onde precisa ir, em algum lugar onde o novo servidor possa acessá-lo.

Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature
    
por 04.09.2015 / 15:17
0
Import-Module servermanager
Install-WindowsFeature Feature,
    Feature, 
    Feature, 
    etc

O acima irá instalar uma lista de recursos. Você pode codificá-los ou salvá-los em um arquivo, um por linha, e usá-los para instalá-los:

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features
    
por 04.09.2015 / 15:17