Jump to content

Powershell - Variable für den Pfad wird nicht übergeben


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

} 

 

Link zu diesem Kommentar

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

 

 

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...