Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell Inhalt von Variablen vergleichen und in eine CSV Speichern

Frage Entwicklung

Mitglied: Brewtaly

Brewtaly (Level 1) - Jetzt verbinden

16.09.2014 um 14:05 Uhr, 1283 Aufrufe, 5 Kommentare, 2 Danke

Hallo zusammen,

ich bin recht neu in der Scripting-Welt mit Powershell und habe deswegen noch einige Probleme ein Powershellscript fertigzustellen.

Worum soll es in den Script gehen:

Dieses Script soll auslesen, weche Programme von einem bestimmten Programm geblockt geworden wären, wenn die entsprechende Policy "scharf"
geschaltet ist.

Mein Ansatz war folgender:

foreach($server in $import_file)
{
Write-Host "Frage Server $($server) nach Eventlog Status ab"
[array]$event_block = invoke-command -computername $server -ScriptBlock { (Get-AppLockerFileInformation -EventLog -EventType Audited -Statistics).FilePath }
[array]$Eventlogs_Sammler = Get-Content -Path $csv

foreach ($event in $event_block)
{
if (!($event.Path -notmatch $Eventlogs_Sammler))
{
Write-Host "Event $event.Path wird in die Liste eingetragen"
Add-Content -Path $csv -Value $event.Path -Force
}
else
{
Write-Host "Event $event existiert bereits und wird nicht in die Liste eingetragen"
}
}
}

Ich habe quasi eine Serverliste aus der ich die Server auslese, auf welchen die Eventlogs überprüft werden sollen. Dann gehe ich hin und schreibe die entsprechenden events der Server in eine Variable ($event_block). Um zu erfahren ob der Inhalt dieser Variable bereits in der entsprechenden csv Datei steht (darf nur 1x drin stehen) wird diese ebenfalls in eine Variable geschrieben. In der Foreach Schleife durchlaufe ich quasi jeden Event und gleiche diesen mit der csv Datei ab um zu überprüfen, ob der Name bereits drin steht.

Leider funktioniert das nicht so ganz wie ich mir das vorstelle. Habe ich irgendwo einen Denkfehler in dem Code? Sorry, bin wie gesagt er seit kurzem dabei

Viele Grüße
Mitglied: colinardo
16.09.2014, aktualisiert um 15:07 Uhr
Hallo Brewtaly, Willkommen auf Administrator.de!
Ohne jetzt den Inhalt deiner "CSV" zu kennen, sollte das mit deinem Code so aussehen wenn in der CSV in jeder Zeile nur der jeweilige Pfad steht.
01.
foreach($server in $import_file) 
02.
03.
    Write-Host "Frage Server $($server) nach Eventlog Status ab" 
04.
    $event_block = invoke-command -computername $server -ScriptBlock {return (Get-AppLockerFileInformation -EventLog -EventType Audited -Statistics).FilePath} 
05.
    $Eventlogs_Sammler = Get-Content -Path $csv 
06.
 
07.
    foreach ($event in $event_block) 
08.
09.
        if ($Eventlogs_Sammler -notcontains $event.Path) 
10.
11.
            Write-Host "Event $event.Path wird in die Liste eingetragen" 
12.
            Add-Content -Path $csv -Value $event.Path -Force 
13.
            $Eventlogs_Sammler = Get-Content -Path $csv 
14.
15.
        else 
16.
17.
            Write-Host "Event $event existiert bereits und wird nicht in die Liste eingetragen" 
18.
19.
20.
}
Alternativ lässt sich das Vergleichen auch mit Compare-Object machen. Quasi Zeile 7 bis 19 ersetzen durch:
compare $Eventlogs_Sammler ($eventblock | select -ExpandProperty Path) | ?{$_.Sideindicator -eq '=>'} | select -Expand InputObject | Add-Content -Path $csv -Force
Grüße Uwe

p.s. Bitte nutze Code-Tags für deinen Quellcode: <code> Quellcode </code>. Merci.
Bitte warten ..
Mitglied: ITvortex
16.09.2014 um 14:37 Uhr
Ich finde wurde eine Version mit Compare-Object bevorzugen, aber jedem das seine
Bitte warten ..
Mitglied: Brewtaly
16.09.2014 um 15:21 Uhr
Hallo Uwe,

vielen Dank für deine Hilfe, das hat im ersten Anlauf sofort funktioniert .

zu dem Compare-Object habe ich eine Frage. Ich kann den "Quelltext" nicht wirklich lesen. Für mich sind das teilweise böhmische Dörfer, da ich noch nicht so lang dabei bin.

Die 2te Frage wäre, was war genau an meiner Version den Quelltextes falsch, sodass die Einbindung in die csv nicht sofort funktioniert hat.
Bitte warten ..
Mitglied: colinardo
16.09.2014, aktualisiert um 15:33 Uhr
Zitat von Brewtaly:
zu dem Compare-Object habe ich eine Frage. Ich kann den "Quelltext" nicht wirklich lesen. Für mich sind das
teilweise böhmische Dörfer, da ich noch nicht so lang dabei bin.
Also mal zerlegt:

Hier werden an Compare-Object zwei Objekte übergeben die verglichen werden sollen, einmal das String-Array deiner CSV und dann dein $eventblock Array aus dem die Pfade ebenfalls mit select als String-Array extrahiert werden). Diese beiden Objekte sollten unbedingt vom selben Typ sein, deshalb die Expandierung der Path-Eigenschaft.
compare $Eventlogs_Sammler ($eventblock | select -ExpandProperty Path)
Das Ergebnis sind alle eindeutigen Werte aus jeder Quelle. Hier filtere ich dann mit dem where-object (?{} ist eine Abkürzung dafür) alle Pfade die nur im "rechten"(-differenceobject) Objekt vorhanden sind.
 | ?{$_.Sideindicator -eq '=>'}
dann wird dieses Ergebnis wieder in ein String-Array gewandelt indem ich mit select die InputObject-Spalte expandiere und dann zum Schluss an Add-Content übergebe das es dann an die CSV anfügt
 | select -Expand InputObject | Add-Content -Path $csv -Force
Die 2te Frage wäre, was war genau an meiner Version den Quelltextes falsch, sodass die Einbindung in die csv nicht sofort funktioniert hat.
Du hast in deiner Variante mit -notmatch verglichen. Hier erwartet die Powershell kein Array sondern eine Regular Expression Pattern, und außerdem hast du das ganze dann nochmal mit ! negiert.

Grüße Uwe
Bitte warten ..
Mitglied: Brewtaly
16.09.2014 um 15:55 Uhr
Klasse, vielen Dank
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Inhalt einer .csv mit PowerShell prüfen
gelöst Frage von Memo66Batch & Shell10 Kommentare

Hallo zusammen, ich bin noch bisschen am hin und her überlegen wie ich das Problem am besten löse: Ich ...

Windows Server
PowerShell Inhalt einer csv Datei löschen
gelöst Frage von makaroniWindows Server4 Kommentare

Hallo zusammen, ich möchter gerne automatisiert über einen Task alle 10 Min eine CSV Datei via Powershell einlesen und ...

Batch & Shell
Powershell Script um Inhalt von Dateien zu vergleichen
Frage von zamsi7Batch & Shell14 Kommentare

Hallo an alle, hoffe ich bin hier richtig Ich würde ein Powershell script benötigen, welche mir hilft Dateien in ...

Batch & Shell
Auslesen und Vergleichen Zweiter CSV Dateien Powershell
gelöst Frage von HainoonBatch & Shell7 Kommentare

Hallo zusammen, ich arbeite im Moment an einem Script zum auslesen und vergleichen von Usern in der AD. Das ...

Neue Wissensbeiträge
Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 10 StundenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 17 StundenVerschlüsselung & Zertifikate1 Kommentar

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 1 TagWindows 104 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 TagSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Von rj11 auf rj45
Frage von jensgebkenLAN, WAN, Wireless19 Kommentare

Hallo Gemeinschaft, könnt ihr mir vielleicht bei der anfertigung eines Kabels helfen - habe ein rj 11 stecker und ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement17 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...