Variablen oder Dateien nach Inhalt Vergleichen Powershell
Hallo Zusammen
Nehmen wir an ich habe 2 Dateien und lade diese in jeweils in eine Variable.
$var1
NBAPS100
NBAPS101
NBAPS102
NBAPS103
NBAPs104
$var2
NBAPS99
NBAPS100
NBAPS101
NBAPS102
NBAPS103
NBAPS104
NBAPS105
Wir kriege ich die NBAPS99 als ergebniss?
Ein Möglichkeit über Dateien würde auch gehen
Danke und grüße
Roman
Nehmen wir an ich habe 2 Dateien und lade diese in jeweils in eine Variable.
$var1
NBAPS100
NBAPS101
NBAPS102
NBAPS103
NBAPs104
$var2
NBAPS99
NBAPS100
NBAPS101
NBAPS102
NBAPS103
NBAPS104
NBAPS105
Wir kriege ich die NBAPS99 als ergebniss?
Ein Möglichkeit über Dateien würde auch gehen
Danke und grüße
Roman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223453
Url: https://administrator.de/forum/variablen-oder-dateien-nach-inhalt-vergleichen-powershell-223453.html
Ausgedruckt am: 23.12.2024 um 11:12 Uhr
7 Kommentare
Neuester Kommentar
compare -ReferenceObject $var1 -DifferenceObject $var2
[OT]
Folgendes muss ich jetzt mal loswerden, da spreche ich einigen Leuten hier aus der Seele, die mich auch schon deswegen angeschrieben warum ich so viel Geduld mit dir habe:
Wir helfen hier gerne auch puren Anfängern(jeder fängt mal an), aber deine Posts sind vielfach so aus dem Kontext gegriffen und beinhalten viel zu wenig Hintergrund-Informationen zu deinen Vorhaben, so dass dir hier kaum einer Antworten möchte. Du bist vielleicht bei deinem Projekt im Bilde, wir hier aber eben nicht!
An der Rechtschreibung sieht man schon, wie viel Mühe du dir gibst uns dein Problem zu erläutern. Wenn du noch nicht mal dafür etwas Mühe aufbringst, und von uns dann hellseherische Fähigkeiten erwartest, bist du hier am falschen Platz. Außerdem lebt solch ein Forum vom Geben und Nehmen, wenn du dann wie in folgendem Post noch nicht mal die Zeit investierst (oder dich traust) deine Lösung in den Post zu schreiben, tust du mir leid ..
Diesen Thread brauche ich ja nun nicht erneut erwähnen, das war das dreisteste was ich je erlebt habe ...
[/OT]
Amen
Wie man von Powershell auf Excel-Dokumente via COM-Object zugreifst kannst du hier nachlesen.
Jetzt wäre die Gelegenheit, uns mal so aufzuklären das jeder versteht was du nun ganz genau mit Powershell und Excel vorhast, denn so wie du dies geschrieben hast versteht das hier keiner genau. Wir haben hier jede Menge Formatierungsmöglichkeiten im Forum womit sich das schön klar darstellen lässt.
Folgendes muss ich jetzt mal loswerden, da spreche ich einigen Leuten hier aus der Seele, die mich auch schon deswegen angeschrieben warum ich so viel Geduld mit dir habe:
Wir helfen hier gerne auch puren Anfängern(jeder fängt mal an), aber deine Posts sind vielfach so aus dem Kontext gegriffen und beinhalten viel zu wenig Hintergrund-Informationen zu deinen Vorhaben, so dass dir hier kaum einer Antworten möchte. Du bist vielleicht bei deinem Projekt im Bilde, wir hier aber eben nicht!
An der Rechtschreibung sieht man schon, wie viel Mühe du dir gibst uns dein Problem zu erläutern. Wenn du noch nicht mal dafür etwas Mühe aufbringst, und von uns dann hellseherische Fähigkeiten erwartest, bist du hier am falschen Platz. Außerdem lebt solch ein Forum vom Geben und Nehmen, wenn du dann wie in folgendem Post noch nicht mal die Zeit investierst (oder dich traust) deine Lösung in den Post zu schreiben, tust du mir leid ..
Diesen Thread brauche ich ja nun nicht erneut erwähnen, das war das dreisteste was ich je erlebt habe ...
[/OT]
Amen
ch habe eine Excel mit 2 Spalten und eine Excel mit 3 Spalten wobei die ersten Spalten verglichen werden sollen.
Von Excel war in deinem Post z.B Eingangs überhaupt keine Rede ...nur von Powershell.Wie man von Powershell auf Excel-Dokumente via COM-Object zugreifst kannst du hier nachlesen.
Jetzt wäre die Gelegenheit, uns mal so aufzuklären das jeder versteht was du nun ganz genau mit Powershell und Excel vorhast, denn so wie du dies geschrieben hast versteht das hier keiner genau. Wir haben hier jede Menge Formatierungsmöglichkeiten im Forum womit sich das schön klar darstellen lässt.
Das war doch mal eine klare Aussage.
Die Variable $clientlog wäre hier nun unsere Liste mit den Log-Einträgen.
Habe beide Variablen in dem Beispiel einfach nur mal manuell mit zwei Beispieldaten gefüllt.
D.h. nun das in unserem Log hier zwei Rechner aufgeführt sind NBAPS99 und NBAPS101. In unserer Rechner-Liste haben wir aber noch den NBAPS100 welcher aber nicht im LOG auftaucht; also ist dies unser Kandidat welchen wir finden müssen. Diesen Vergleich führen wir mit einem
Du musst dir halt mal die Ausgaben des Compare-Object ansehen um zu verstehen was es macht. Ich empfehle Dir mit der Powershell ISE zu arbeiten, da hast du ab der Powershell-Version 3.0 ein Syntax-Highlighting und die Shell zeigt dir die verfügbaren Parameter zu dem jeweiligen Befehl an den du eingibst.
Du machst wahrscheinlich zu viel auf einmal, mit der Powershell musst du Schritt für Schritt arbeiten und dir zwischendurch auch mal die Zwischenausgaben ansehen. Nur so lernt man das ganze besser kennen.
Grüße Uwe
Also hier an einem Beispiel erläutert:
Die Variable $clientliste sei jetzt mal unsere Liste in der alle Client-Rechner die Ihr habt, aufgeführt sind.Die Variable $clientlog wäre hier nun unsere Liste mit den Log-Einträgen.
Habe beide Variablen in dem Beispiel einfach nur mal manuell mit zwei Beispieldaten gefüllt.
D.h. nun das in unserem Log hier zwei Rechner aufgeführt sind NBAPS99 und NBAPS101. In unserer Rechner-Liste haben wir aber noch den NBAPS100 welcher aber nicht im LOG auftaucht; also ist dies unser Kandidat welchen wir finden müssen. Diesen Vergleich führen wir mit einem
Compare-Object
durch. Diesem übergeben wir als ReferenceObject unsere $clientlog-Variable und als DifferenceObject unsere $clientliste. Kriterium ist hier die Property Client. Das Konstrukt schicken wir dann mit der Pipe an ein Where-Object wo wir die Unterschiede untersuchen, d.h. wir filtern die Computer heraus welche nur in der $clientliste vorkommen. Das sind dann unsere Clients die sich in der letzten Zeit nicht gemeldet haben.$clientliste = @()
$clientliste += New-Object PSObject -Property @{"Client"="NBAPS99"}
$clientliste += New-Object PSObject -Property @{"Client"="NBAPS100"}
$clientlog = @()
$clientlog += New-Object PSObject -Property @{"Client"="NBAPS99";"Date"="01.10.2013";"Time"="10:17"}
$clientlog += New-Object PSObject -Property @{"Client"="NBAPS101";"Date"="10.10.2012";"Time"="22:17"}
Compare-Object -ReferenceObject $clientlog -DifferenceObject $clientliste -Property Client -PassThru | ?{$_.Sideindicator -eq "=>"}| select Client
Du machst wahrscheinlich zu viel auf einmal, mit der Powershell musst du Schritt für Schritt arbeiten und dir zwischendurch auch mal die Zwischenausgaben ansehen. Nur so lernt man das ganze besser kennen.
Grüße Uwe