web-dev-qa-db-ja.com

PowerShellを使用してWindows機能をインストールするための一般化された構成ファイルを作成することは可能ですか?

現在、Windows Server 2012R2を実行しているVM)のビルドを自動化しようとしています。現時点での課題は、役割と機能の追加を自動化することです。役割と機能ウィザード内には、 PowerShellで実行できるXML構成ファイルをエクスポートするオプション。

ただし、XMLファイルを確認すると、XMLファイルが実行されているサーバーに固有であることがわかります。「コンピューター名」などのフィールドが含まれています。

多くのVMに役割と機能をインストールするスクリプトを実行したい場合はどうなりますか?特定のコンピューターに合わせてパーソナライズされたものではなく、一般化された構成ファイルが必要です。

誰かがこの問題について意見を持っていますか?

8
Cameron McAuley

はい、LinuxとWindowsの両方で、次のことができる目的の状態構成ファイルを作成できます。

  • サーバーの役割と機能を有効または無効にする
  • レジストリ設定を管理する
  • ファイルとディレクトリを管理する
  • プロセスとサービスを開始、停止、および管理する
  • グループとユーザーアカウントを管理する
  • 新しいソフトウェアを展開する
  • 環境変数を管理する
  • Windows PowerShellスクリプトを実行する
  • 目的の状態から外れた構成を修正する
  • 特定のノードの実際の構成状態を検出します

IISを有効にし、Webサイトファイルが正しいフォルダーにあることを確認するサンプル構成ファイルを次に示します。これらのものがインストールされていないか欠落している場合は、必要に応じてそれらをインストールまたはコピーします($ 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を使用することの真の力は、(ターゲットマシンに関して)プッシュまたはプルする構成を格納できる場所を定義できることです。 プッシュおよびプル構成モード を参照してください。 。構成がマシンが物理か仮想かは関係ありませんが、DSCをプルするためにサーバーを起動するには少なくとも2012年かかると思います。

12
Jim B

すべてをPowerShellで実行できます

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

新しいサーバーがアクセスできる場所に、移動する必要のあるxmlをコピーします。

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

上記は機能のリストをインストールします。それらをハードコーディングするか、1行に1つずつファイルに保存してから、これを使用してインストールできます。

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