Edy 0 Geschrieben 27. September 2022 Melden Teilen Geschrieben 27. September 2022 Hallo, ich bin auch ein Anfaenger in PS. Ich versuche ein Skript mit Oberfläche zu erstellen. 1 Oberfläche ist fertig und laut Write-Host bei Selektion auch funktional. 2. Skript für LOG auslesen ist auch fertig und funktioniert. aber die OrdnerVerzeichnis an Skript wir nicht übergeben sondern verwendet den StandartVerzeichnis. Hier mein Skript hoffe um unterstützung. Danke in voraus Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing #Allgemeine Info + groesse $form = New-Object Windows.Forms.Form -Property @{ StartPosition = [Windows.Forms.FormStartPosition]::CenterScreen Size = New-Object Drawing.Size 540, 380 Text = 'Logs durchsuchen' Topmost = $true } #--------------------------------------------------------------------------------- # Labels $Suchtext = New-Object System.Windows.Forms.Label -Property @{ Location = New-Object Drawing.Point 10, 40 Size = New-Object Drawing.Size 110, 20 Text = 'Wonach suchen wir?' } $form.Controls.Add($Suchtext) $SucheIntext = New-Object System.Windows.Forms.Label -Property @{ Location = New-Object Drawing.Point 10, 74 Size = New-Object Drawing.Size 110, 20 Text = 'Suchverlauf' } $form.Controls.Add($SucheIntext) $SpeichernIntext = New-Object System.Windows.Forms.Label -Property @{ Location = New-Object Drawing.Point 10, 95 Size = New-Object Drawing.Size 110, 20 Text = 'Der Speicher Ort' } $form.Controls.Add($SpeichernIntext) #------------------------------------------------------ # Suche Von- Bis $SucheVon = New-Object System.Windows.Forms.Label -Property @{ Location = New-Object Drawing.Point 8, 120 Size = New-Object Drawing.Size 27, 20 Text = 'Von:' } $form.Controls.Add($SucheVon) $SucheBis = New-Object System.Windows.Forms.Label -Property @{ Location = New-Object Drawing.Point 280, 120 Size = New-Object Drawing.Size 25, 20 Text = 'Bis:' } $form.Controls.Add($SucheBis) #--------------------------------------------------------------------------------- # Textbox $textBox = New-Object System.Windows.Forms.TextBox -Property @{ Location = New-Object Drawing.Point 130, 40 Size = New-Object Drawing.Size 255, 20 } $form.Controls.Add($textBox) $textBoxOffnen = New-Object System.Windows.Forms.TextBox -Property @{ Location = New-Object Drawing.Point 120, 69 Size = New-Object Drawing.Size 275, 20 Text = [Environment]::GetFolderPath('Desktop') } $form.Controls.Add($textBoxOffnen) $textBoxSpeicher = New-Object System.Windows.Forms.TextBox -Property @{ Location = New-Object Drawing.Point 120, 90 Size = New-Object Drawing.Size 275, 20 Text = [Environment]::GetFolderPath('Desktop') } $form.Controls.Add($textBoxSpeicher) #--------------------------------------------------------------------------------- # Ok und Cancel button $okButton = New-Object Windows.Forms.Button -Property @{ Location = New-Object Drawing.Point 188, 290 Size = New-Object Drawing.Size 75, 23 Text = 'OK' DialogResult = [Windows.Forms.DialogResult]::OK } $okButton_OnClick = { $OrdnerMitLogs = $textBoxOffnen.Text $PfadTxtDatei = $textBoxSpeicher.Text $NameLogFile = "transaction.log" Write-Host 'OK BUTTON ONCLICK WURDE ausgeführt:' $SpeicherOrdner.FileName Write-Host $textBoxOffnen.Text Write-Host $textBoxSpeicher.Text } #$form.AcceptButton = $okButton $okButton.add_Click($okButton_OnClick) $form.Controls.Add($okButton) $cancelButton = New-Object Windows.Forms.Button -Property @{ Location = New-Object Drawing.Point 263, 290 Size = New-Object Drawing.Size 75, 23 Text = 'Cancel' DialogResult = [Windows.Forms.DialogResult]::Cancel } #$form.CancelButton = $cancelButton $form.Controls.Add($cancelButton) #------------------------------------------------------------------------ # Speicher Button $SpeicherOrtButton = New-Object System.Windows.Forms.Button -Property @{ Location = New-Object Drawing.Point 400, 90 Size = New-Object Drawing.Size 90, 20 Text = 'Speichen unter' } #------------------------------------------------------------------------ $SpeicherOrtButton_OnClick = { Add-Type -AssemblyName System.Windows.Forms $Ausgangsverzeichnis = [Environment]::GetFolderPath('Desktop') $SpeicherOrdner = New-Object System.Windows.Forms.saveFileDialog $SpeicherOrdner.InitialDirectory = $Ausgangsverzeichnis $SpeicherOrdner.FileName = 'test' $SpeicherOrdner.Filter = 'Excel (*.csv)|*.csv' $responseS = $SpeicherOrdner.ShowDialog( ) # $Antwort kann OK oder Cancel sein if ( $responseS -eq [System.Windows.Forms.DialogResult]::OK){ $textBoxSpeicher.Text = $SpeicherOrdner.FileName $Speicher = $SpeicherOrdner.FileName $Speicher.toSting } Write-Host 'Ihr Auswahl Datei:' $SpeicherOrdner.FileName } Write-Host 'Speicher 2' Write-Host $Speicher $SpeicherOrtButton.add_Click($SpeicherOrtButton_OnClick) $form.Controls.Add($SpeicherOrtButton) #------------------------------------------------------------------------ # Suchverlauf Button $SucheInButton = New-Object System.Windows.Forms.Button -Property @{ Location = New-Object Drawing.Point 400, 70 Size = New-Object Drawing.Size 80, 20 Text = 'Suche in' } #------------------------------------------------------------------------ $SucheInButton_OnClick = { Add-Type -AssemblyName System.Windows.Forms $SucheOrdner = New-Object System.Windows.Forms.FolderBrowserDialog -Property @{ RootFolder = 'MyComputer' ShowNewFolderButton = $false } $response = $SucheOrdner.ShowDialog( ) # $Antwort kann OK oder Cancel sein if ( $response -eq [System.Windows.Forms.DialogResult]::OK){ $textBoxOffnen.Text = $SucheOrdner.SelectedPath $OrdnerMitLogs = $SucheOrdner.SelectedPath Write-Host "Es wurde Verzeichnis ausgewaehlt" Write-Host $OrdnerMitLogs } else { $OrdnerMitLogs = $textBoxOffnen.Text Write-Host "Verzeichnis Standart" Write-Host $OrdnerMitLogs } Write-Host 'Ihr Auswahl Datei:' $SucheOrdner.SelectedPath } $SucheInButton.add_Click($SucheInButton_OnClick) $form.Controls.Add($SucheInButton) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- #Kalender $calendarVon = New-Object Windows.Forms.MonthCalendar -Property @{ Location = New-Object Drawing.Point 38, 120 ShowTodayCircle = $false MaxSelectionCount = 1 } $form.Controls.Add($calendarVon) $calendarBis = New-Object Windows.Forms.MonthCalendar -Property @{ Location = New-Object Drawing.Point 308, 120 ShowTodayCircle = $false MaxSelectionCount = 1 } $form.Controls.Add($calendarBis) #--------------------------------------------------------------------------------- # Datum eingrenzen Von Bis. #Function zum erzeugen eines Arrays, das später bei Suche verwendet wird. function ArrayUntersuchungszeitraum {param([DateTime]$ersterTag,[DateTime]$LetzterTag) $Tage = @() if($LetzterTag -gt $ersterTag){ $start = $ersterTag While ($start -lt $LetzterTag){ $Tage += $start #$start.ToShortDateString() $start = $start.AddDays(1) } $Tage += $LetzterTag } if($ersterTag -gt $LetzterTag){ $start = $LetzterTag While ($start -lt $ersterTag){ $Tage += $start #$start.ToShortDateString() $start = $start.AddDays(1) } $Tage += $ersterTag } return $Tage } # $zeitraum = ArrayUntersuchungszeitraum -ersterTag $DatumVon -LetzterTag $DatumBis #--------------------------------------------------------------------------------------- function SuchOrdner {param([String]$SucheInOrdner) $OrdnerMitLogs = @() If ($textBoxOffnen.Text -gt 'C:\Users\ebbbb\Desktop\Übung PowerShell\Logs Untersuchung'){ $OrdnerMitLogs = $textBoxOffnen.Text } else { $OrdnerMitLogs = $textBoxOffnen.Text } } #------------------------------------------------------------------------ #$PfadTxtDatei = "C:\Temp\test.csv" #$OrdnerMitLogs = $textBoxOffnen.Text # Ist noch fest $NameLogFile = "transaction.log" #--------------------------------------------------------------------------------- # Suchabfolge function LogsAuslesen {param([DateTime]$StartDatum, [DateTime]$EndDatum, [String]$quelle, [String]$Suchkriterium, [String]$dest, [String]$LogName) " " | Out-File $dest -Append "Ergebnis der Suche nach $($Suchbegriff) zwischen dem $($DatumVon.ToShortDateString()) und dem $($DatumBis.ToShortDateString())" | Out-File $dest -Append " " | Out-File $dest -Append " " | Out-File $dest -Append "############################################################################################################################################################################################" | Out-File $dest -Append $UntersuchungsZeitraum = ArrayUntersuchungszeitraum -ersterTag $StartDatum -LetzterTag $EndDatum $UntersuchungsZeitraum = $UntersuchungsZeitraum.ToShortDateString() #$UntersuchungsZeitraum Get-Childitem $quelle | ForEach-Object -process { write-Host $textBoxOffnen.Text $LogFile = Join-Path $quelle -ChildPath $_ $LogFileFinal = Join-Path $LogFile -ChildPath $LogName # Hier definiere ich die Pfad der Log-Datei für einzelne Ordner #Kleiner Einleitungstext " " | Out-File $dest -Append "Es wird untersucht:" | Out-File $dest -Append $_ | Select-Object -ExpandProperty Name | Out-File $dest -Append $LogFileFinal | Out-File $dest -Append #Nun Schaue ich, wie viele Einträg dort sind. $AnzahlEintrage = Get-Content -Path $LogFileFinal | Select-String -Pattern $Suchkriterium | Select-String -Pattern $UntersuchungsZeitraum | Measure-Object | Select-Object -ExpandProperty Count # if Abfrage, falls keine Eintraege vorhanden sind. Ansonsten alle Rausschreiben. if($AnzahlEintrage -eq 0){ " " | Out-File $dest -Append "Keine Eintrage" | Out-File $dest -Append " " | Out-File $dest -Append "############################################################################################################################################################################################" | Out-File $dest -Append } else{ Get-Content -Path $LogFileFinal | Select-String -Pattern $Suchkriterium | Select-String -Pattern $UntersuchungsZeitraum | Select-Object -Property <#LineNumber,#> Line | Out-File $dest -Append " " | Out-File $dest -Append "############################################################################################################################################################################################" | Out-File $dest -Append } } } #--------------------------------------------------------------------------------- $result = $form.ShowDialog() if ($result -eq [Windows.Forms.DialogResult]::OK) { $DatumVon = $calendarVon.SelectionStart $DatumBis = $calendarBis.SelectionStart $Suchbegriff = $textBox.Text #$SucheIn = $Load #$textBoxOffnen.Text #$SpeichernIn = $textBoxSpeicher.Text # $Load Write-Host "Date selected: $($DatumVon.ToShortDateString()) und $($DatumBis.ToShortDateString()) fur die Suche nach $($Suchbegriff)" LogsAuslesen -StartDatum $DatumVon -EndDatum $DatumBis -quelle $OrdnerMitLogs -Suchkriterium $Suchbegriff -dest $PfadTxtDatei -LogName $NameLogFile } Zitieren Link zu diesem Kommentar
Damian 1.550 Geschrieben 27. September 2022 Melden Teilen Geschrieben 27. September 2022 Hallo und Willkommen on Board! Das Board hat Dir vor dem Posten einen Warnhinweis gezeigt, weil der ursprüngliche Thread schon sehr alt war. Diese Warnung hat einen Grund. Bitte in Zukunft beachten. Ich habe Deinen Beitrag in ein neues Thema verschoben. Beim nächsten Mal bitte Code auch als Code formatieren (siehe Editor-Optionen), das erhöht die Lesbarkeit enorm. Ich habe jetzt mal für Dich erledigt. VG Damian 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.