是否可以创建通用配置文件以使用PowerShell安装Windows功能?


8

我目前正在尝试自动化运行Windows Server 2012 R2的VM的构建。目前的挑战是自动添加角色和功能。在角色和功能向导中,有一个选项可以导出可以在PowerShell中运行的XML配置文件。

但是,浏览完XML文件后,我可以看到它特定于运行它的服务器-它包含诸如“ ComputerName”之类的字段。

如果我想运行在许多VM上安装角色和功能的脚本怎么办?我需要一个通用的配置文件,而不是针对特定计算机的个性化配置文件。

有人对此事有意见吗?

Answers:


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 cmdlet?使用DSC代替脚本的真正力量在于,我可以定义一个位置,可以在其中存储要推入或从中拉出的配置(相对于目标计算机),请参见“ 推入和拉出配置模式”。配置并不关心计算机是物理机还是虚拟机,但是我认为至少需要2012年才能使服务器启动才能拉DSC。


6

您可以在PowerShell中完成所有操作

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

将xml复制到新服务器可以访问的位置。

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

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

上面将安装功能列表。您可以对它们进行硬编码,也可以仅将它们保存在一个文件中,每行一个,然后使用此文件来安装它们:

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

对于服务器2012r2,它是Install-WindowsFeature
Drifter104'9

啊。我们主要使用2008,所以我不知道。感谢您指出了这一点。
Deadly-Bagel 2015年

使用GUI安装角色时,需要使用下拉菜单进行一些配置-使用您的方法通过powershell进行设置时,如何配置这些配置?它们都设置为默认值了吗?
卡梅隆·麦考利

嗯 在这种情况下,您似乎需要使用-configurationfilepath参数并将其指向您在OP中提到的导出配置文件。如您所说,它包含特定于PC的信息有些奇怪,但是所有证据都表明它将默认情况下将其安装在本地计算机上,并将其指向这些文件之一将根据需要配置所有内容,因此可能不使用它。它可能只是您从哪个计算机上获得配置的参考。
Deadly-Bagel 2015年

但是可以,它将使用不带文件的默认选项。
Deadly-Bagel 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.