Можно ли создать обобщенный файл конфигурации для установки функций Windows с помощью PowerShell?

8

В настоящее время я пытаюсь автоматизировать сборку виртуальной машины под управлением Windows Server 2012 R2. На данный момент задача заключается в автоматизации добавления ролей и функций. В мастере ролей и функций есть возможность экспортировать файл конфигурации XML, который можно запустить в PowerShell.

Однако после просмотра файла XML я вижу, что он специфичен для сервера, на котором он запущен - он содержит такие поля, как «ComputerName».

Что если я хочу запустить скрипт, который устанавливает роли и функции на многих виртуальных машинах? Мне нужен файл конфигурации, который обобщен, а не персонализирован для конкретного компьютера.

У кого-нибудь есть вход по этому вопросу?

Кэмерон Маколи
источник

Ответы:

12

Да, как для Linux, так и для Windows вы можете создать желаемые файлы конфигурации состояния, которые могут:

  • Включить или отключить роли и функции сервера
  • Управление настройками реестра
  • Управление файлами и каталогами
  • Запускать, останавливать и управлять процессами и службами
  • Управление группами и учетными записями пользователей
  • Развертывание нового программного обеспечения
  • Управление переменными среды
  • Запускать скрипты Windows PowerShell
  • Исправьте конфигурацию, которая отошла от желаемого состояния
  • Узнайте фактическое состояние конфигурации на данном узле

Вот пример файла конфигурации, который активирует IIS, гарантирует, что файлы веб-сайта находятся в правильной папке, и, если какие-либо из этих вещей не установлены или отсутствуют, установите или скопируйте их соответствующим образом (обратите внимание, что $ websitefilepath предполагается как предопределено как источник для файлов сайта):

    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"
          }
       }
    }

Дополнительные сведения см. В разделе « Обзор конфигурации требуемого состояния Windows PowerShell» и « Начало работы с настройкой требуемого состояния Windows PowerShell». .

Так почему бы вам использовать это вместо простого командлета install-windowsfeature? Реальная сила использования DSC вместо сценария заключается в том, что я могу определить местоположение, в котором я могу хранить конфигурации, в которые можно передавать или извлекать (относительно целевой машины), см. Режимы конфигурации Push и Pull . Конфигурация не заботится о том, является ли машина физической или виртуальной, но я полагаю, что для загрузки сервера с поддержкой DSC потребуется как минимум 2012 год.

Джим Б
источник
6

Вы можете сделать все это в PowerShell

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

Скопируйте XML-файл в нужное место, куда новый сервер сможет получить доступ к нему.

Import-Clixml <path to xml>\installed.xml | Install-WindowsFeature
Drifter104
источник
0
Import-Module servermanager
Install-WindowsFeature Feature,
    Feature, 
    Feature, 
    etc

Выше будет установлен список функций. Вы можете жестко закодировать их или просто сохранить их в файле, по одному на строку, а затем использовать это для их установки:

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features
Deadly-Бублик
источник
Для сервера 2012r2 это Install-WindowsFeature
Drifter104
Ах. Мы в основном используем 2008 год, поэтому я не знал. Спасибо что подметил это.
Смертельный бублик
При использовании графического интерфейса пользователя для установки ролей необходимо выполнить несколько конфигураций с помощью раскрывающихся списков - как они настраиваются при настройке с помощью powershell с использованием вашего метода? Все ли они установлены по умолчанию?
Кэмерон Маколи
Хм. В этом случае, похоже, вам нужно использовать -configurationfilepathпараметр и указать его в экспортированном файле конфигурации, который вы упомянули в вашем OP. Как ни странно, он содержит специфичную для ПК информацию, как вы сказали, но все свидетельства указывают на то, что он установит его на локальный компьютер по умолчанию, а указание на один из этих файлов настроит все по мере необходимости, поэтому он, вероятно, не используется. Это может быть просто ссылка на компьютер, с которого вы получили конфигурацию, или что-то еще.
Смертельный бублик
Но да, он будет использовать параметры по умолчанию без файла.
Смертельный бублик