none
Summe x RRS feed

  • Frage

  • Hi, mir fehlt es gerade an Ideen wie ich die folgende Aufgabe lösen kann.

    Aufgabe:

    Ich habe eine Datenbank die gefüllt ist mit Computernamen. Zusätzlich stehen in der Datenbank noch weitere Merkmal der Computer. Nun möchte ich bei einer bestimmten Anzahl von Clients ein bestimmtes Merkmal ändern. In einen Menü kann auswählt warden, welchen Wert das Merkmal bekommen soll und bei wievielen Computer dies geändert werden soll.

    Das einlesen der Computernamen funktioniert prima. Die Auswahl des Merkmals und der Anzahl der Clients ist auch fertig.

    Wenn ich $out ausgebe, dann erhalte ich alle Namen. Aber wie baue ich jetzt eine Schleife, dass nur z.B. 100 Clients geändert werden?

    Wer kann mir da helfen?


    IT Berater

    Montag, 23. Dezember 2013 15:45

Antworten

  • Hallo,

    das macht man mit Schleifen, also siehe dir mal diese Teile der Powershell Hilfe an.

    Get-Help about_For
    Get-Help about_Do
    Get-Help about_While
    Get-Help about_Break
    Get-Help about_Continue

    Hier zwei Beispiele

    $Computer = @("SrvA", "SrvB", "SrvC", "SrvD", "SrvE", "SrvF", "SrvG", "SrvH", "SrvI", "SrvJ", "SrvK", "SrvL") $ChangeComputer = 5 $i = 1 while($i -le $ChangeComputer) { $Computer[$i - 1] = "Srv$($i)" $i++ }
    $Computer



    $Computer = @("SrvA", "SrvB", "SrvC", "SrvD", "SrvE", "SrvF", "SrvG", "SrvH", "SrvI", "SrvJ", "SrvK", "SrvL")
    $ChangeComputer = 6
    $abElement = 5 
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$($abElement)] = "Srv$($i)"
    	$i++
    	$abElement++
    }
    $Computer

    Das sind nur simple Beispiele ohne Fehlerbehandlung. Im Script sollte man z.B. auch pruefen, das die Anzahl der zu bearbeitenden Computer nicht die Anzahl der Computer uebersteigt usw.

    Beste Gruesse
    brima

    Dienstag, 24. Dezember 2013 13:10
  • Hallo,

    du erschlaegst uns hier ja fast mit Informationen, d.h. niemand kennt dein Code, mit dem die Daten eingelesen wird, womit auch niemand bekannt ist, was deine Variable $out z.b: ist, ein selbstdefiniertes Object, ein multidimensionales Array ...

    Und im ersten Beitrag schreibst Du das du z.B.: 100 Computer aendern willst, dein zweiter Beitrag ist so zu verstehen, dass du nur bestimmte Computer aendern willst?

    Hier jetzt noch zwei Beispiele, wo die Eigenschaft Farbe der ersten beiden Computer auf blau geaendert wird.

    $Computer = (("SrvA","rot","schnell"),
    	     ("SrvB","gruen","mittel"),
    	     ("SrvC","gelb","langsam")
    	)
    $ChangeComputer = 2
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$i - 1][1] = "blau"
    	$i++
    }
    $Computer

    $Computer =@()
    $ComputerObj = New-Object Object 
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvA"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "rot"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "schnell"
    $Computer += $ComputerObj
    $ComputerObj = New-Object Object
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvB"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "gruen"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "mittel"
    $Computer += $ComputerObj
    $ComputerObj = New-Object Object
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvC"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "gelb"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "langsam"
    $Computer += $ComputerObj
    $Computer
    $ChangeComputer = 2
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$i - 1].Color = "blau"
    	$i++
    }
    $Computer



    Beste Gruesse
    brima
    Freitag, 27. Dezember 2013 13:11

Alle Antworten

  • Hallo,

    das macht man mit Schleifen, also siehe dir mal diese Teile der Powershell Hilfe an.

    Get-Help about_For
    Get-Help about_Do
    Get-Help about_While
    Get-Help about_Break
    Get-Help about_Continue

    Hier zwei Beispiele

    $Computer = @("SrvA", "SrvB", "SrvC", "SrvD", "SrvE", "SrvF", "SrvG", "SrvH", "SrvI", "SrvJ", "SrvK", "SrvL") $ChangeComputer = 5 $i = 1 while($i -le $ChangeComputer) { $Computer[$i - 1] = "Srv$($i)" $i++ }
    $Computer



    $Computer = @("SrvA", "SrvB", "SrvC", "SrvD", "SrvE", "SrvF", "SrvG", "SrvH", "SrvI", "SrvJ", "SrvK", "SrvL")
    $ChangeComputer = 6
    $abElement = 5 
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$($abElement)] = "Srv$($i)"
    	$i++
    	$abElement++
    }
    $Computer

    Das sind nur simple Beispiele ohne Fehlerbehandlung. Im Script sollte man z.B. auch pruefen, das die Anzahl der zu bearbeitenden Computer nicht die Anzahl der Computer uebersteigt usw.

    Beste Gruesse
    brima

    Dienstag, 24. Dezember 2013 13:10
  • Danke für deine Antwort. Leider konnte ich die Schleife noch nicht so ändern das es funktioniert. In dem Beispiel sind die Namen der Computer ja bekannt. In meinem Fall sind sie es aber nicht. Ich muss also die Werte abgreifen sie an erster, zweiter, dritten usw. Stelle stehen.

    Aber leider habe ich dafür noch nichts gefunden.


    IT Berater

    Freitag, 27. Dezember 2013 12:17
  • Hallo,

    du erschlaegst uns hier ja fast mit Informationen, d.h. niemand kennt dein Code, mit dem die Daten eingelesen wird, womit auch niemand bekannt ist, was deine Variable $out z.b: ist, ein selbstdefiniertes Object, ein multidimensionales Array ...

    Und im ersten Beitrag schreibst Du das du z.B.: 100 Computer aendern willst, dein zweiter Beitrag ist so zu verstehen, dass du nur bestimmte Computer aendern willst?

    Hier jetzt noch zwei Beispiele, wo die Eigenschaft Farbe der ersten beiden Computer auf blau geaendert wird.

    $Computer = (("SrvA","rot","schnell"),
    	     ("SrvB","gruen","mittel"),
    	     ("SrvC","gelb","langsam")
    	)
    $ChangeComputer = 2
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$i - 1][1] = "blau"
    	$i++
    }
    $Computer

    $Computer =@()
    $ComputerObj = New-Object Object 
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvA"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "rot"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "schnell"
    $Computer += $ComputerObj
    $ComputerObj = New-Object Object
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvB"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "gruen"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "mittel"
    $Computer += $ComputerObj
    $ComputerObj = New-Object Object
    $ComputerObj | Add-Member -NotePropertyName Name -NotePropertyValue "SrvC"
    $ComputerObj | Add-Member -NotePropertyName Color -NotePropertyValue "gelb"
    $ComputerObj | Add-Member -NotePropertyName Speed -NotePropertyValue "langsam"
    $Computer += $ComputerObj
    $Computer
    $ChangeComputer = 2
    $i = 1
    while($i -le $ChangeComputer) {
    	$Computer[$i - 1].Color = "blau"
    	$i++
    }
    $Computer



    Beste Gruesse
    brima
    Freitag, 27. Dezember 2013 13:11
  • Hallo brima,

    danke für deine Hilfe. Es ist immer eine Kunst Beiträge so zu schreiben das jeder damit etwas anfangen kann. Ich versuche immer mein bestes.

    Gerade habe ich diese Schleife erfolgreich getestet:

    $i=0
    while($i -lt $Clients) {$out[$i]; $i++}

    $Clients ist die Anzahl der Computer für die ich die Einstellung ändern möchte. Das $out[$i]; werde ich nun durch die eigentliche Aufgabe ersetzen.

    Liebe Grüße

    Norbert


    IT Berater

    Freitag, 27. Dezember 2013 13:48
  • Hallo,

    Du solltest eigentlich die Beitraege der Helfenden als Antwort markieren, nicht deine Eigenen.

    Sie den angepinten Thread: Antorten markieren


    Beste Gruesse
    brima

    Freitag, 27. Dezember 2013 13:58
  • Ich habe das als Antwort markiert, was ich als Lösung eingesetzt habe.


    IT Berater

    Freitag, 27. Dezember 2013 16:06
  • Hallo,

    also Du hast gefragt wie Du eine Schleife bauen kannst, ich habe hierzu ein paar Beispiele gepostet.

    Alles While Schliefen, die du auch genutzt hast. Das meine Vorschlaege nicht als direkte Loesung Platz in deinem Code finden ist klar, denn den kennt ja nach wie vor niemand.

    Aber meine While Schleifen scheinen dir ja ganz und gar nicht geholfen zu haben, dann brauchst Du die natuerlich auch nicht zu markieren und ich spare mir in Zunkunft zu helfen, zumindest wenn Du hier was fragst!

    Beste Gruesse
    brima

    Freitag, 27. Dezember 2013 16:20