Benutzer mit den meisten Antworten
Summe x

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
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_ContinueHier 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++ }
$ComputerDas 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- Als Antwort vorgeschlagen Alex Pitulice Freitag, 27. Dezember 2013 11:03
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 28. Oktober 2015 14: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- Bearbeitet brima Freitag, 27. Dezember 2013 13:11
- Als Antwort vorgeschlagen Lennart Freitag, 27. Dezember 2013 14:09
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 28. Oktober 2015 14:10
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_ContinueHier 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++ }
$ComputerDas 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- Als Antwort vorgeschlagen Alex Pitulice Freitag, 27. Dezember 2013 11:03
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 28. Oktober 2015 14: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
-
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- Bearbeitet brima Freitag, 27. Dezember 2013 13:11
- Als Antwort vorgeschlagen Lennart Freitag, 27. Dezember 2013 14:09
- Als Antwort markiert Denniver ReiningMVP, Moderator Mittwoch, 28. Oktober 2015 14:10
-
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
- Als Antwort markiert NBC2009 Freitag, 27. Dezember 2013 13:48
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Mittwoch, 28. Oktober 2015 14:10
-
Hallo,
Du solltest eigentlich die Beitraege der Helfenden als Antwort markieren, nicht deine Eigenen.Sie den angepinten Thread: Antorten markieren
Beste Gruesse
brima -
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