Arrays vergleichen mit Powershell
Moin,
ich sitze hier vor einen Problem mit Powershell, das mich schier wahnsinnig macht.
Hintergrund: Die auf einem Windows 2012r2 Server laufenden Dienste sollen gegen eine Liste von Default-Diensten geprüft werden. Die nicht im Default enthaltenen Dienste sollen ausgegeben werden
Die CSV sieht dabei so aus
Insgesamt 142 Zeilen
Problem: Egal wie ich es anstelle, ich bekomme nich die "Differenz" der beiden Arrays ...
Versucht habe ich:
oder
und zum Schluss noch das manuelle durchlaufen der beiden Arrays mit 2 foreach Loop...
Wo liegt mein (denk-)Fehler?
Google, Technet und StackOverflow hab ich schon durch :/
lg,
Slainte
ich sitze hier vor einen Problem mit Powershell, das mich schier wahnsinnig macht.
Hintergrund: Die auf einem Windows 2012r2 Server laufenden Dienste sollen gegen eine Liste von Default-Diensten geprüft werden. Die nicht im Default enthaltenen Dienste sollen ausgegeben werden
$StdSvc = Import-Csv .\std_win2012r2.csv
$CurrenSvc = Get-Service -ComputerName "MyServer" | select name
Die CSV sieht dabei so aus
"AeLookupSvc"
"ALG"
"AppIDSvc"
"Appinfo"
"AppMgmt"
"AppReadiness"
"AppXSvc"
"AudioEndpointBuilder"
"Audiosrv"
"BFE"
"BITS"
...
Problem: Egal wie ich es anstelle, ich bekomme nich die "Differenz" der beiden Arrays ...
Versucht habe ich:
$CurrenSvc | where ($StdSvc -notcontains $_ )
compare-object $StdSvc $CurrentSvc
Wo liegt mein (denk-)Fehler?
Google, Technet und StackOverflow hab ich schon durch :/
lg,
Slainte
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 355720
Url: https://administrator.de/contentid/355720
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Du hast Objekte mit unterschiedlichen Typs verglichen und die Eigenschaften nicht expandiert
Spaltenname der CSV bitte anpassen
$StdSvc = Import-Csv .\std_win2012r2.csv -delimiter ";" | Select -Expand Spaltenname
$CurrenSvc = Get-Service -ComputerName "MyServer" | select -Expand name
compare $stdSvc $currentSvc -Passthru | ?{$_.SideIndicator -eq '=>'}
Doch klappt hier einwandfrei, da hast du selbst einen Fehler eingebaut.
Bitte Delimiter richtig angeben!
Bitte Delimiter richtig angeben!
Hier auch der Beweis:
Ergibt nur x, so wie es zu erwarten war!
So wie es aussieht hast du die CSV nicht richtig importiert und den Delimiter nicht richtig angegeben.
$default = @('a','b','c','d')
$current = @('a','c','x')
compare $default $current -PassThru | ?{$_.Sideindicator -eq '=>'}
So wie es aussieht hast du die CSV nicht richtig importiert und den Delimiter nicht richtig angegeben.