Apakah mungkin membuat file konfigurasi umum untuk menginstal fitur Windows menggunakan PowerShell?

8

Saat ini saya mencoba untuk mengotomatisasi pembuatan VM yang menjalankan Windows Server 2012 R2. Saat ini tantangannya adalah mengotomatisasi penambahan peran dan fitur. Di dalam wizard peran dan fitur ada opsi untuk mengekspor file konfigurasi XML yang dapat dijalankan di PowerShell.

Namun, setelah melihat melalui file XML saya bisa melihatnya khusus untuk server yang sedang dijalankan - itu berisi bidang-bidang seperti "ComputerName".

Bagaimana jika saya ingin menjalankan skrip yang menginstal peran dan fitur di banyak VM? Saya memerlukan file konfigurasi yang digeneralisasi, tidak dipersonalisasi ke komputer tertentu.

Adakah yang punya masukan tentang masalah ini?

Cameron McAuley
sumber

Jawaban:

12

Ya, untuk Linux dan Windows Anda dapat membuat file konfigurasi negara yang diinginkan yang dapat:

  • Mengaktifkan atau menonaktifkan peran dan fitur server
  • Kelola pengaturan registri
  • Kelola file dan direktori
  • Mulai, hentikan, dan kelola proses dan layanan
  • Kelola grup dan akun pengguna
  • Menyebarkan perangkat lunak baru
  • Kelola variabel lingkungan
  • Jalankan skrip Windows PowerShell
  • Perbaiki konfigurasi yang telah menjauh dari kondisi yang diinginkan
  • Temukan keadaan konfigurasi aktual pada node yang diberikan

Berikut adalah contoh file konfigurasi yang akan mengaktifkan IIS, memastikan bahwa file situs web berada di folder yang benar, dan jika salah satu dari hal-hal ini tidak diinstal atau hilang, untuk menginstal atau menyalinnya sesuai (perhatikan bahwa $ websitefilepath dianggap sebagai telah ditentukan sebelumnya sebagai sumber untuk file situs web):

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

Untuk perincian lebih lanjut, lihat Tinjauan Konfigurasi Konfigurasi yang Diinginkan Windows PowerShell dan Memulai dengan Konfigurasi Yang Diinginkan Windows PowerShell .

Jadi mengapa Anda menggunakan ini bukan hanya cmdlet install-windowsfeature? Kekuatan nyata menggunakan DSC daripada skrip adalah bahwa saya dapat menentukan lokasi tempat saya dapat menyimpan konfigurasi untuk didorong atau ditarik dari (sehubungan dengan mesin target) lihat Mode Konfigurasi Dorong dan Tarik . Konfigurasi tidak peduli apakah mesin itu fisik atau virtual, tapi saya percaya dibutuhkan setidaknya 2012 untuk mendapatkan server untuk boot untuk menarik DSC.

Jim B
sumber
6

Anda dapat melakukan semuanya di PowerShell

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

Salin xml ke mana harus pergi, di suatu tempat server baru dapat mengaksesnya.

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

Di atas akan menginstal daftar fitur. Anda dapat membuat kode keras atau hanya menyimpannya dalam file, satu per baris, dan kemudian gunakan ini untuk menginstalnya:

Import-Module servermanager
$features = get-content C:\Features.txt
Install-WindowsFeature $features
Bagel yang Mematikan
sumber
Untuk server 2012r2 itu adalah Install-WindowsFeature
Drifter104
Ah. Kami terutama menggunakan 2008 jadi saya tidak sadar. Terima kasih telah menunjukkannya.
Deadly-Bagel
Saat menggunakan GUI untuk menginstal peran ada beberapa konfigurasi yang perlu Anda lakukan menggunakan dropdown - bagaimana ini dikonfigurasi ketika diatur melalui PowerShell menggunakan metode Anda? Apakah semuanya diatur ke default?
Cameron McAuley
Hmm. Dalam hal ini sepertinya Anda perlu menggunakan -configurationfilepathparameter dan mengarahkannya ke file konfigurasi yang diekspor yang Anda sebutkan di OP. Agak aneh itu berisi informasi khusus PC seperti yang Anda katakan, tetapi semua bukti menunjukkan bahwa itu akan menginstalnya di komputer lokal secara default dan mengarahkannya ke salah satu file akan mengkonfigurasi semua yang diperlukan sehingga mungkin tidak digunakan. Mungkin hanya referensi dari komputer mana Anda mendapatkan konfigurasi atau sesuatu.
Deadly-Bagel
Tapi ya itu akan menggunakan opsi default tanpa file.
Deadly-Bagel