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


8

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

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

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

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

回答:


12

はい。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年かかると思います。


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

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

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

サーバー2012r2の場合、Install-WindowsFeature
Drifter104

ああ。私は主に2008を使用しているので、気付かなかった。ご指摘いただきありがとうございます。
Deadly-Bagel、2015

GUIを使用してロールをインストールする場合、ドロップダウンを使用して作成する必要があるいくつかの構成があります-メソッドを使用してpowershellで設定する場合、これらはどのように構成されますか?それらはすべてデフォルトに設定されていますか?
Cameron McAuley、2015

うーん。その場合、-configurationfilepathパラメーターを使用して、OPで言及したエクスポートされた構成ファイルを指す必要があるようです。少し奇妙なことに、あなたが言ったようにPC固有の情報が含まれていますが、すべての証拠により、デフォルトでローカルコンピューターにインストールされ、それらのファイルの1つをポイントすると、必要に応じてすべてが設定されるため、おそらく使用されません。これは、構成を取得したコンピューターの参照にすぎない場合があります。
Deadly-Bagel、2015

しかし、はい、ファイルなしでデフォルトのオプションを使用します。
Deadly-Bagel、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.