IT-Yogi

Flexibla lösningar!

Följ mig

twitterlinkedinby feather
You are here: Home / IT / Installera serverroller från xml del 2

Installera serverroller från xml del 2

November 27, 2013 by Lars Gustavsson Leave a Comment

I del 1 visade jag hur man använder en xml fil för att installera en roll via powershell, men om man vill installera samma roll på flera servrar då? En snabb get-help Install-WindowsFeature kanske kan ge en ledtråd:

gethelpwindowsfeature

Så som enklast använd ComputerName växeln och sedan exekvera kommandot flera gånger, men det är ju inte speciellt automatiserat eller speciellt snyggt.
För att automatisera processen behövs en lista på servrar från någon källa. Ett av de smidigaste sätten i PowerShell är csv filer. En CSV-fil är en vanlig textfil där alla värden är separerade av ett komma (Comma Separated Values).
Nu behöver vi ju bara ett värde, nämligen datornamn, så bara öppna notepad och mata in datornamnen, som det ska installeras roller på, enligt följande bild:

notepadserverlist

För att importera listan på servrar i PowerShell skriv import-csv servers.txt

ImportServers

  Nu är det dags att skriva lite kod, nämligen en for-loop. Den behövs för att exekvera ett kommando för varje rad i en lista. Så först behövs listan läggas in i en variabel:

PowerShell
1
$ServerList = Import-CSV Servers.txt

Nästa steg blir for loopen:

1
2
3
foreach ($Server in $ServerList)
{
}

På ren svenska, för varje server i listan med servrar utför  något, och något ska vara mellan måsvingarna. Och det som ska utföras är att installera en serverroll:

1
2
3
4
foreach ($Server in $Serverlist)
{
Install-WindowsFeature -ComputerName $Server -ConfigurationFilePath “c:\configfiles\DeploymentConfigTemplate.xml”
}

Enkelt eller hur? Men då frågar sig vän av ordning, om jag vill ha olika roller på olika servrar då? Ja då är det bara att lägga in den informationen i CSV-filen.

notepadserverlistxml

 För att använda flera parametrar från CSV filen ange bara kolumnnamnet efter variabeln. Så nedan översatt från Powershell till svenska är alltså: För varje rad i listan med servrar stoppa in servernamnet i variabeln server och stoppa in XML filen i variabeln ConfigFile.

PowerShell
1
2
3
4
5
6
foreach ($Row in $Serverlist)
{
$Server = $Row.ServerName
$ConfigFile = $Row.XML
Install-WindowsFeature -ComputerName $Server -ConfigurationFilePath $ConfigFile
}

Ett lite mer komplett skript med en variabel för sökvägen till konfigurationsfilerna.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
#Path to Role Configuration XML:s
$Path = "C:\ConfigFiles\"
 
$ServerList = Import-CSV Servers.txt
 
foreach ($Row in $Serverlist)
{
$Server = $Row.ServerName
$ConfigFile = $Path + $Row.XML
Install-WindowsFeature -ComputerName $Server -ConfigurationFilePath $ConfigFile
}

Skriptet ovan är en grund för att egentligen göra vad som helst med parametrar från en textfil, bara ersätt Install-WindowsFeature med ett annat PowerShellkommando och kör. Ett exempel är mitt skript för att installera websiter från CSV.

Intressant? Dela på:
twitterlinkedinby feather

Filed Under: IT

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Ämnen

  • Health
  • IT
    • Skript
    • Solutions (English)

Senast skrivet

  • Protected: Video
  • Fitness, health and movement
  • Installera serverroller från xml del 2
  • Installera serverroller från xml
  • Quickly set new DNS servers on a certain subnet

Bloggegor

  • Fredrik Pålerud
  • Henrik Ericsson
  • Jimmy Andersson
  • Johan Arwidmark
  • Kim Hellman
  • Oscar Virot
  • Simon Wåhlin
  • Tobias Öien
  • Tomas Lepa

Arkiv

Recent Comments

  • Installera serverroller från xml del 2 | IT-Yogi on Automatiskt skapa websiter från CSV-fil
  • Installera serverroller från xml del 2 | IT-Yogi on Installera serverroller från xml
  • Remembers that casting variables is sticky | Tidbits of Information from Virot on Automatiskt skapa websiter från CSV-fil

Copyright © 2021 · BlogNews Theme on Genesis Framework · WordPress · Log in