Benutzer mit den meisten Antworten
Column in Listview wird nicht gefüllt

Frage
-
Wenn ich in meiner Listview folgenden code benutze werden die Zellen nicht gefüllt.
foreach ($SysEvent in $SysEvents) { $Member = New-Object PSObject -Property @{ Index = [String]$SysEvent.Index InstanceID = [String]$SysEvent.InstanceID TimeGenerated = [String]$SysEvent.TimeGenerated EntryType = [String]$SysEvent.EntryType Source = [String]$SysEvent.Source Message = [String]$SysEvent.Message }
Benutze ich den folgenden code wird mir der Index angezeigt aber dafür der Computername nicht.
foreach ($SysEvent in $SysEvents) { $Member = New-Object PSObject -Property @{ PSComputerName = [String]$SysEvent.PSComputerName Index = [String]$SysEvent.Index InstanceID = [String]$SysEvent.InstanceID TimeGenerated = [String]$SysEvent.TimeGenerated EntryType = [String]$SysEvent.EntryType Source = [String]$SysEvent.Source Message = [String]$SysEvent.Message }
'PSComputerName','Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_} 'Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_}
Verstehe einfach nicht was ich da falsch mache.
Hier ist der complete code:
$btnSysEvents_Click={ # Empty process bar $Progressbar.value = 0 # Empty StatusBox $StatusBox.Text = "" # Empty StatusBoxTools $StatusBoxTools.Text = "" # Close Excel button CloseExcelBtn getcomp Initialize-Listview $StatusBox.Text = "Machine Status: Retrieving System Events from Computer $Comp..." 'PSComputerName','Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_} # 'Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_} Resize-Columns # Col0 = $lvMain.Columns[0].Text $Info = @() $SysEvents = Get-EventLog -ComputerName $Comp -LogName System -EntryType Error,Warning -Newest 50 #| select-object Index,InstanceID,TimeGenerated,EntryType,Source,Message $i=0 ForEach ($SysEvent in $SysEvents) { $i++ (($i / $SysEvents.count)*100) $progressbar.PerformStep() } foreach ($SysEvent in $SysEvents) { $Member = New-Object PSObject -Property @{ PSComputerName = [String]$SysEvent.PSComputerName Index = [String]$SysEvent.Index InstanceID = [String]$SysEvent.InstanceID TimeGenerated = [String]$SysEvent.TimeGenerated EntryType = [String]$SysEvent.EntryType Source = [String]$SysEvent.Source Message = [String]$SysEvent.Message } $Info += $Member } Start-Sleep -m 250 if ($SysError){$StatusBox.Text = "Machine Status: [$Comp] $SysError"} else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else { } } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" } # besseres column resize ForEach($Column in $lvMain.Columns) { $lvMain.AutoResizeColumn($Column.Index,([System.Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)) } }
- Bearbeitet 001fred Freitag, 4. März 2016 15:36
Freitag, 4. März 2016 08:56
Antworten
-
Ich weiß nicht wo die Klammer herkommt, oben in meinem Code steht sie nicht. :)
Ohne Klammer und vor allem ohne die Bedingung?{$_.Index -ne 0}
funktioniert der Code.
ForEach ( $Col in $lvMain.Columns ) {
Möglicherweise hast du irgendwo einen neuen Fehler beim rumprobieren eingebaut.
Ich würde mal jeden Befehl, jede Bedingung Schritt für Schritt durchgehen und überprüfen was da genau passiert. Dann findest du das Problem.
Was die Formatierung betrifft:
Vergleiche mal, ein Abschnitt deines Codes:
if ($SysError){$StatusBox.Text = "Machine Status: [$Comp] $SysError"} else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else { } } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Und nun der gleiche Abschnitt vernünftig formatiert:
if ($SysError){ $StatusBox.Text = "Machine Status: [$Comp] $SysError" } else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else {} } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Siehst du einen Unterschied? Die Codebox killt offenbar ein paar Leerzeichen, aber ich denke du siehst die Idee des Ganzen. So kann man viel leichter nachvollziehen, welche Code zu welcher Bedingung oder Schleife gehört.
Ob man die öffnenden Klammern hinter den Befehl oder in die nächste Zeile setzt, ist Geschmackssache. Ich finde es so am übersichtlichsten.
Das ist nur eine Maßnahme. Wenn man viele ineinander verschachtelte Bedingungen oder Schleifen hat lohnt es sich auch manchmal hinter die schließenden Klammern einen Kommentar zu setzen. (Das gilt auch für Schleifen oder Bedingungen deren Inhalt größer ist als dein Bildschirm Zeilen darstellen kann.) z.b. so:
} #End Foreach
Du solltest außerdem in Scripten keine Aliase benutzen (%, ?). Auch wenn man deren Übersetzung genau kennt, es stört den Lesefluss und das schnelle erfassen der Funktion. Die Pipeline solltest du in Scripten nebenbei generell vermeiden, die ist deutlich schlechter Schritt für Schritt zu debuggen als normale Schleifen. Nebenbei ist sie oft auch deutlich langsamer.
Kommentare helfen auch zu erkennen bzw. zu erinnern was genau eine Funktion, ein Abschnitt im Code tut. Anfangs hast du jede Zeile kommentiert, dann gar nicht mehr.
Gruß, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.
- Bearbeitet Denniver ReiningMVP, Moderator Sonntag, 6. März 2016 20:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:26
Sonntag, 6. März 2016 14:22Moderator -
Du hast ihn ja auch editiert. Vorher waren die Zeilen noch nicht auskommentiert. :)
Unabhängig davon, ich hab noch ein drittes und hoffentlich jetzt endgültig das eigentlich Problem gefunden: Die Zuweisung der Subitems funktioniert so nicht (richtig).
Beim Erstellen eines Listviewitems, wird automatisch auch bereits ein leeres Subitem erstellt. Wenn du nun per add() die anderen Subitems hinzufügst, bleibt das erste, leere unangetastet. Dieses kannst du nur ändern indem du es direkt adressieren würdest ala ...subitems[0].text = "blah". Ich hab es jetzt einfacher und ganz anders gelöst, indem wir direkt beim Erstellen des Items das Array mit Subitems mitgeben:
if ($SysError){ $StatusBox.Text = "Machine Status: [$Comp] $SysError" } else{ foreach ($evt in $info){ $Item = New-Object System.Windows.Forms.ListViewItem([System.String[]](@($evt.Index,$evt.InstanceID,$evt.TimeGenerated,$evt.EntryType,$evt.Source,$evt.Message)),$null) $Item.UseItemStyleForSubItems = $False if ($evt.EntryType -eq "Error") { $Item.SubItems[3].BackColor = "red" } else { $Item.SubItems[3].BackColor = "yellow" } [Void]$lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Montag, 7. März 2016 22:33
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:27
Montag, 7. März 2016 22:19Moderator
Alle Antworten
-
Der Code den du oben gepostet hast, ist in Ordnung. Daher liegt nahe das der Fehler in dem Teil liegt, den du weggelassen hast. :)
Poste mal den Rest der Pipeline aus der Box unten, sowie deine "Add-Column" Funktion.
Kleiner Tipp nebenbei: ich weiß nicht wer die blöde Idee hatte, den Leuten zu erzählen man solle seine Funktionen in der Art wie CMDlets benennen: Mach das nicht. Der Benefit ist null. Aber in Anbetracht der Tatsache, das die Anzahl der CMDlets und mitgelieferten Funktionen mit jedem PoSh-Release steigt (bei v4 schon ~1273), ist die Chance groß, das wenn du in einem Jahr ein altes Script von dir anschaust, du Funktionsaufrufe nicht von CMDlets unterscheiden kannst. Insbesondere beim Debugging von großen Scripten kann das echt nervig sein. Benenne Funktionen eindeutig mit z.b. "F" oder "FN" davor.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Freitag, 4. März 2016 21:37
Freitag, 4. März 2016 14:14Moderator -
Dein Problem liegt hier:
ForEach ( $Col in ($lvMain.Columns | ?{$_.Index -ne 0}) ){
Du lässt jedes Mal beim Zuweisen der Texte, die Spalte mit dem Index 0 aus. Das ist die erste Spalte! :-)
So gehts:
ForEach ( $Col in $lvMain.Columns ) {
Aber mein Lieber, es ist kein Wunder das du da nicht mehr durchblickst. Keine Abschnitte, keine Kommentare, eine einheitliche Formatierung, Klammern mal hier mal da, keine Ahnung was zueinander gehört. Das nächste Mal, das sag ich dir jetzt schon, wühl' ich mich durch sowas nicht mehr durch. :-/
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Freitag, 4. März 2016 21:32
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:26
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:26
Freitag, 4. März 2016 20:15Moderator -
Hallo Denniver,
wenn ich den Code von dir nehme erhalte ich einen Fehler zwischen den zwei letzten Klammern ){ am Ende.
ForEach($Colin($lvMain.Columns){
Bei folgendem Code verschwindet der Fehler
ForEach($Colin($lvMain.Columns)){
aber der Index wird trotzdem nicht angezeigt. :-(
Zu der Formattierung meines codes. Mir ist nicht bewusst, dass daran etwas falsch ist. ?? In den letzten 2 Jahren seit dem ich mich PS beschäftige habe ich reichlich codes/scripts im netz gesehen/gelesen wo ich als (mehr oder weniger) Anfänger keine Durchblick habe. Gut in meinem fehlen vielleicht Beschreibungen aber von der Auflistung her find ich das übersichtlich und lesbar. Vielleicht kannst du mir ja ein paar Tips geben wie man(n) das besser macht/ machen könnte?Danke und SWE!
- Bearbeitet 001fred Samstag, 5. März 2016 15:44
Samstag, 5. März 2016 15:24 -
Ich weiß nicht wo die Klammer herkommt, oben in meinem Code steht sie nicht. :)
Ohne Klammer und vor allem ohne die Bedingung?{$_.Index -ne 0}
funktioniert der Code.
ForEach ( $Col in $lvMain.Columns ) {
Möglicherweise hast du irgendwo einen neuen Fehler beim rumprobieren eingebaut.
Ich würde mal jeden Befehl, jede Bedingung Schritt für Schritt durchgehen und überprüfen was da genau passiert. Dann findest du das Problem.
Was die Formatierung betrifft:
Vergleiche mal, ein Abschnitt deines Codes:
if ($SysError){$StatusBox.Text = "Machine Status: [$Comp] $SysError"} else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else { } } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Und nun der gleiche Abschnitt vernünftig formatiert:
if ($SysError){ $StatusBox.Text = "Machine Status: [$Comp] $SysError" } else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else {} } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Siehst du einen Unterschied? Die Codebox killt offenbar ein paar Leerzeichen, aber ich denke du siehst die Idee des Ganzen. So kann man viel leichter nachvollziehen, welche Code zu welcher Bedingung oder Schleife gehört.
Ob man die öffnenden Klammern hinter den Befehl oder in die nächste Zeile setzt, ist Geschmackssache. Ich finde es so am übersichtlichsten.
Das ist nur eine Maßnahme. Wenn man viele ineinander verschachtelte Bedingungen oder Schleifen hat lohnt es sich auch manchmal hinter die schließenden Klammern einen Kommentar zu setzen. (Das gilt auch für Schleifen oder Bedingungen deren Inhalt größer ist als dein Bildschirm Zeilen darstellen kann.) z.b. so:
} #End Foreach
Du solltest außerdem in Scripten keine Aliase benutzen (%, ?). Auch wenn man deren Übersetzung genau kennt, es stört den Lesefluss und das schnelle erfassen der Funktion. Die Pipeline solltest du in Scripten nebenbei generell vermeiden, die ist deutlich schlechter Schritt für Schritt zu debuggen als normale Schleifen. Nebenbei ist sie oft auch deutlich langsamer.
Kommentare helfen auch zu erkennen bzw. zu erinnern was genau eine Funktion, ein Abschnitt im Code tut. Anfangs hast du jede Zeile kommentiert, dann gar nicht mehr.
Gruß, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.
- Bearbeitet Denniver ReiningMVP, Moderator Sonntag, 6. März 2016 20:00
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:26
Sonntag, 6. März 2016 14:22Moderator -
Hallo Denniver,
irgendwie scheine ich einen Fehler zu machen den ich immer wieder übersehen.
Habe den code jetz angepasst aber die Index Column bleibt immer noch leer.
$btnSysEvents_Click={ # Empty process bar $Progressbar.value = 0 # Empty StatusBox $StatusBox.Text = "" # Empty StatusBoxTools $StatusBoxTools.Text = "" # Close Excel button CloseExcelBtn getcomp Initialize-Listview $StatusBox.Text = "Machine Status: Retrieving System Events from Computer $Comp..." # 'PSComputerName','Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_} 'Index','InstanceID','TimeGenerated','EntryType','Source','Message'| %{Add-Column $_} Resize-Columns # Col0 = $lvMain.Columns[0].Text $Info = @() $SysEvents = Get-EventLog -ComputerName $Comp -LogName System -EntryType Error,Warning -Newest 50 #| select-object Index,InstanceID,TimeGenerated,EntryType,Source,Message $i=0 ForEach ($SysEvent in $SysEvents) { $i++ (($i / $SysEvents.count)*100) $progressbar.PerformStep() } foreach ($SysEvent in $SysEvents) { $Member = New-Object PSObject -Property @{ # PSComputerName = [String]$SysEvent.PSComputerName Index = [String]$SysEvent.Index InstanceID = [String]$SysEvent.InstanceID TimeGenerated = [String]$SysEvent.TimeGenerated EntryType = [String]$SysEvent.EntryType Source = [String]$SysEvent.Source Message = [String]$SysEvent.Message } $Info += $Member } Start-Sleep -m 250 if ($SysError){ $StatusBox.Text = "Machine Status: [$Comp] $SysError" } else{ $Info | %{ $Item = New-Object System.Windows.Forms.ListViewItem($_.$Col0) $Item.UseItemStyleForSubItems = $False # ForEach ($Col in ($lvMain.Columns | ?{$_.Index -ne 0})){ ForEach ( $Col in $lvMain.Columns ) { $Field = $Col.Text $SubItem = $Item.SubItems.Add($_.$Field) If($Field -eq "EntryType") { If($_.EntryType -eq "Error") { $SubItem.BackColor = "red" # Hintergrundfarbe Fehlermeldung } else { $SubItem.BackColor = "yellow" # Hintergrundfarbe Warnmeldung } } Else {} } $lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" } # besseres column resize ForEach($Column in $lvMain.Columns) { $lvMain.AutoResizeColumn($Column.Index,([System.Windows.Forms.ColumnHeaderAutoResizeStyle]::ColumnContent)) } }
- Bearbeitet 001fred Montag, 7. März 2016 12:24
Montag, 7. März 2016 12:23 -
Ja ich sehe gerade, du hast tatsächlich noch einen zweiten Fehler drin:
$SysEvent.PSComputerName
gibt es nicht als Eigenschaft. Was ist gibt ist:
$SysEvent.MachineName
Gruß, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.Montag, 7. März 2016 12:54Moderator -
Du hast ihn ja auch editiert. Vorher waren die Zeilen noch nicht auskommentiert. :)
Unabhängig davon, ich hab noch ein drittes und hoffentlich jetzt endgültig das eigentlich Problem gefunden: Die Zuweisung der Subitems funktioniert so nicht (richtig).
Beim Erstellen eines Listviewitems, wird automatisch auch bereits ein leeres Subitem erstellt. Wenn du nun per add() die anderen Subitems hinzufügst, bleibt das erste, leere unangetastet. Dieses kannst du nur ändern indem du es direkt adressieren würdest ala ...subitems[0].text = "blah". Ich hab es jetzt einfacher und ganz anders gelöst, indem wir direkt beim Erstellen des Items das Array mit Subitems mitgeben:
if ($SysError){ $StatusBox.Text = "Machine Status: [$Comp] $SysError" } else{ foreach ($evt in $info){ $Item = New-Object System.Windows.Forms.ListViewItem([System.String[]](@($evt.Index,$evt.InstanceID,$evt.TimeGenerated,$evt.EntryType,$evt.Source,$evt.Message)),$null) $Item.UseItemStyleForSubItems = $False if ($evt.EntryType -eq "Error") { $Item.SubItems[3].BackColor = "red" } else { $Item.SubItems[3].BackColor = "yellow" } [Void]$lvMain.Items.Add($Item) CountProgress } $btnSysEventExcel.visible = $true $StatusBox.Text = "Machine Status: 50 newest System errors and warnings on Computer $Comp" }
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Montag, 7. März 2016 22:33
- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:27
Montag, 7. März 2016 22:19Moderator -
Dear Denniver,
die Lösung und natürlich auch die Erklärung ist wie immer in eurem Forum Spitzenklasse!!!
Vielen Dank und schönen Tag noch!!
- Als Antwort markiert 001fred Dienstag, 8. März 2016 11:03
- Tag als Antwort aufgehoben Denniver ReiningMVP, Moderator Dienstag, 8. März 2016 11:27
Dienstag, 8. März 2016 11:03