Avatar billede tripwire Nybegynder
12. juni 2009 - 21:44 Der er 3 kommentarer og
1 løsning

powershell og xml liste

Hej Eksperter

Jeg har en række servere, som alle skal have tilføjet nogle routes. Jeg har lyst til at tilføje disse routes med powershell via dens Invoke-Command metode. Så kan jeg køre dem fra et centralt sted. Jeg har så lavet understående xml liste, som indeholder serverne og de routes de skal have tilføjet. Grunden til at jeg laver sådan en liste, er fordi jeg så senere kan udbygge den med andre ting som skal laves per server.


<ServerList>
    <Server>
        <hostname>srv0431</hostname>
    ´    <IP>15.141.63.151</IP>
        <routes>
            <route>172.138.15.21 mask 255.255.255.255 15.141.124.254 metric if 15.141.36.110 -p</route>
            <route>15.131.5.251 mask 255.255.255.255 15.141.124.254 metric if 15.141.36.110 -p</route>
        </routes>
    </Server>
    <Server>
        <hostname>srv0632</hostname>
          <IP>15.141.69.132</IP>
        <routes>   
            <route>172.138.15.21 mask 255.255.255.255 15.141.124.254 metric if 15.141.66.102 -p</route>
            <route>15.131.5.251 mask 255.255.255.255 15.141.124.254 metric if 15.141.36.102 -p</route>
        </routes>
    </Server>
</ServerList>


og så til spørgsmålet :)

Hvordan får jeg lavet en løkke som løber listen igennem og fisker servernes og dens routes ud og udfører kommandoen?

Logisk set skal den vel:

foreach(server in serverlist)
    foreach(route in server)
        Invoke-Command -ComputerName HostnameFromXml -ScriptBlock {route add "routeFromXml}


Nogen der kan hjælpe med et stykke kode?
Avatar billede tripwire Nybegynder
14. juni 2009 - 16:51 #1
anyone?
Avatar billede tripwire Nybegynder
27. juni 2009 - 11:37 #2
anybody again?
Avatar billede tripwire Nybegynder
29. juni 2009 - 18:04 #3
dang
Avatar billede scum_lord Nybegynder
05. september 2009 - 00:07 #4
Faldt lige over denne i en google søgning, og tænkte jeg lige ville give det er forsøg... Here Goes

[xml]$list =Get-Content c:\temp\test.xml
Foreach ($comp in $list.ServerList.Server){
$hostComp = $comp.hostname
Foreach ($Route in $Comp.Routes.route) {
Write-Host "Invoke-Command -ComputerName $hostComp -ScriptBlock { route add $Route}"
}
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester