mrjohndo
Goto Top

Powershell exe Datei in Label anzeigen

Hallo an alle,

ich habe folgendes Problem:
Ich habe eine xlsx Datei auf einem Netzlaufwerk liegen, diese Datei beinhaltet Name Telefon und Handy Nummern.
Diese möchte ich gerne in einer GUI in einem Label anzeigen lassen, bzw die GUI existiert bereits.
Jetzt meine Frage kann ich eine xlsx Datei einbinden oder geht nur CSV und wenn jemand diese Datei ändert (Eintrag)
wird sie dann automatisch synchronisiert ?

Ich bin noch relativ neu in Powershell und freue mich auf Vorschäge bzw Hilfe.

Content-Key: 1890468488

Url: https://administrator.de/contentid/1890468488

Printed on: May 17, 2024 at 07:05 o'clock

Member: colinardo
Solution colinardo Feb 11, 2022 updated at 16:20:56 (UTC)
Goto Top
Moin.
*Hust*, also in dem Text und Titel ist ziemlich viel wirres und widersprüchliches Zeug enthalten, sorry.
Im Titel schreibst du eine "exe Datei" in einem Label anzeigen?? Wie soll das gehen, eine EXE Datei hat binäre Daten und die in einem Label der nur aus Text besteht anzuzeigen macht keinen Sinn, oder meinst du ein zur Exe gewrapptes PS Skript?!
Genauso macht es eigentlich keinen Sinn eine Excel-Datei in einem Label anzuzeigen, Excel Dateien bestehen aus Spalten und Zeilen und der Label nur aus reinem Text. Willst du die Daten einer Excel-Datei vernünftig anzeigen und aktualisieren lassen würde man das bspw. in einem DataGridView machen.

Beispiel wie man die Daten einer Excel-Datei in ein DataGridView-Control lädt und regelmäßig aktualisiert

# excel data source
$excelfile = 'D:\test.xlsx'  
# excel sheet name
$tablename = 'Tabelle1'  
# update data every x seconds
$update_seconds = 5
# ======================
function GenerateForm {
    Add-Type -A System.Windows.Forms
    $dt = New-Object System.Data.DataTable
    $timer = New-Object System.Windows.Forms.Timer -P @{
        add_Tick = {UpdateDataSource}
        Interval = $update_seconds * 1000
    }
    function UpdateDataSource {
        $conn = $null
        try{
            $conn = New-Object System.Data.OleDb.OleDbConnection ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$excelfile`";Extended Properties=`"Excel 12.0;HDR=YES;`";Mode=Read;")  
            $conn.Open()
            if ($conn.State -eq 'Open'){  
                $dt.Rows.Clear()
                $adapter = New-Object System.Data.OleDb.OleDbDataAdapter "SELECT * FROM [$tablename$];",$conn  
                $adapter.Fill($dt)
                $dgv.Update()
            }
        }catch{

        }finally{
            if ($conn){$conn.close()}
        }
    }

    $form = New-Object System.Windows.Forms.Form -P @{
        ClientSize = '800,600'  
        Text = "Load Excel Data into DataGridView"  
    }
    $dgv = New-Object System.Windows.Forms.DataGridView -P @{
        Size = '780,540'  
        Location = '10,10'  
        Anchor = 'Top,Right,Bottom,Left'  
        DataSource = $dt
        ReadOnly = $true
    }
    $btn = New-Object System.Windows.Forms.Button -P @{
        Text = "Load Data"  
        Location = '10,560'  
        Size = '180,30'  
        Anchor = 'Bottom,Left'  
        add_Click = {
            if ($this.Text -eq 'Start Update'){  
                if (!(Test-Path $excelfile)){
                    [System.Windows.Forms.MessageBox]::Show("Excel-File $excelfile could not be found!",'Error',0,48)  
                    return
                }
                UpdateDataSource
                $timer.Start()
                $this.Text = 'Stop Update'  
            }else{
                $this.Text = 'Start Update'  
                $timer.Stop()
                
            }
        }
    }
    $form.Controls.AddRange(@($btn,$dgv))
    [void]$form.ShowDialog()
    # cleanup timer
    $timer.Stop();$timer.Dispose()
}
GenerateForm
Grüße Uwe
Member: mrjohndo
mrjohndo Feb 11, 2022 at 16:20:39 (UTC)
Goto Top
Danke dir, ich habe im Net auch nichts gefunden wegen Excel.
Ich vermute das CSV auch nicht so funktioniert ?
Member: colinardo
colinardo Feb 11, 2022 updated at 16:25:31 (UTC)
Goto Top
Zitat von @mrjohndo:
Ich vermute das CSV auch nicht so funktioniert ?
Selbstverständlich kann man CSV-Daten auch in einer Form anzeigen lassen ... Das geht sogar out of the box auch ohne extra Form
Import-CSV .\data.csv -delimiter ";" | out-gridview  
Lässt sich aber genausogut ähnlich wie oben in ein DataGridView in einer Form laden. Musst dich halt mal für etwas entscheiden sonst wird das nix face-smile. Deine Schilderung ist dahingehend leider viel zu ungenau ...
Member: mrjohndo
mrjohndo Feb 14, 2022 at 16:36:30 (UTC)
Goto Top
Ich habe eine Form erstellt mit Buttons, das Tool wird als ADM geöffnet somit kann ich alle Buttons als ADM ausführen.
Jetzt möchte ich die wichtigsten Telefonnummern einlesen und in ein Label oder richtextbox ausgeben.
In der Box oder Label soll dann Name, Festnetz und Handynummer erscheinen.
out-gridview möchte ich nicht es soll sich kein neues Fenster öffnen.
Ich habe mir die Excel Datei als csv gespeichert.

Hier der komplette Code

Ab #CSVTelefonnummern auslesen, Ausgabe in richTextBox2 soll die csv erscheinen oder Zeile 358
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
[System.Windows.Forms.Application]::EnableVisualStyles()
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")  
[void] [System.Windows.Forms.Application]::EnableVisualStyles();

#################################################################################
#Als Administrator ausführen

function Check-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Check-Admin) -eq $false)  
{
    Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -windowstyle hidden -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))  
    Stop-Process -Id $PID
}
 
$scriptDirectory = Split-Path $MyInvocation.MyCommand.Path
Set-Location $scriptDirectory

#################################################################################

#Hauptfenster
$form = New-Object System.Windows.Forms.Form
$form.Text = ''  
$form.Size = New-Object System.Drawing.Size(1100,600)
$form.StartPosition = 'CenterScreen'  

###################################################################################

#TabPage
$TabControl = New-Object System.Windows.Forms.TabControl
$TabControl.Location = New-Object System.Drawing.Size(10,0)
$TabControl.Size = New-Object System.Drawing.Size(1060,550)

$tabPage1 = New-Object System.Windows.Forms.TabPage
$tabPage1.Name = "Tab1"  
$tabPage1.Text = ""  

##################################################################################

#Klick Button01
$Button01 = New-Object System.Windows.Forms.Button
$Button01.Location = New-Object System.Drawing.Point(20,30)
$Button01.Size = New-Object System.Drawing.Size(100,23)
$Button01.Text = 'FileEx'  
$Button01.Add_Click({start-process })
$Button01.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button01
$form.Controls.Add($Button01)

#Klick Button02
$Button02 = New-Object System.Windows.Forms.Button
$Button02.Location = New-Object System.Drawing.Point(20,60)
$Button02.Size = New-Object System.Drawing.Size(100,23)
$Button02.Text = 'Explorer++'  
$Button02.Add_Click({start-process })
$Button02.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button02
$form.Controls.Add($Button02)

#Klick Button03
$Button03 = New-Object System.Windows.Forms.Button
$Button03.Location = New-Object System.Drawing.Point(20,90)
$Button03.Size = New-Object System.Drawing.Size(100,23)
$Button03.Text = 'MMC'  
$Button03.Add_Click({start-process })
$Button03.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button03
$form.Controls.Add($Button03)

#Klick Button04
$Button04 = New-Object System.Windows.Forms.Button
$Button04.Location = New-Object System.Drawing.Point(20,120)
$Button04.Size = New-Object System.Drawing.Size(100,23)
$Button04.Text = 'CCfCC'  
$Button04.Add_Click({start-process })
$Button04.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button04
$form.Controls.Add($Button04)

#Klick Button05
$Button05 = New-Object System.Windows.Forms.Button
$Button05.Location = New-Object System.Drawing.Point(20,150)
$Button05.Size = New-Object System.Drawing.Size(100,23)
$Button05.Text = 'SCCM'  
$Button05.Add_Click({start-process ""})  
$Button05.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button05
$form.Controls.Add($Button05)

#Klick Button06
$Button06 = New-Object System.Windows.Forms.Button
$Button06.Location = New-Object System.Drawing.Point(20,180)
$Button06.Size = New-Object System.Drawing.Size(100,23)
$Button06.Text = 'MSRA'  
$Button06.Add_Click({start-process cmd.exe -ArgumentList "})  
$Button06.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button06
$form.Controls.Add($Button06)

#Klick Button07
$Button07 = New-Object System.Windows.Forms.Button
$Button07.Location = New-Object System.Drawing.Point(20,210)
$Button07.Size = New-Object System.Drawing.Size(100,23)
$Button07.Text = 'ISE'  
$Button07.Add_Click({start-process })
$Button07.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button07
$form.Controls.Add($Button07)

#Klick Button08
$Button08 = New-Object System.Windows.Forms.Button
$Button08.Location = New-Object System.Drawing.Point(20,240)
$Button08.Size = New-Object System.Drawing.Size(100,23)
$Button08.Text = 'Checker'  
$Button08.Add_Click({start-process })
$Button08.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button08
$form.Controls.Add($Button08)

#Klick Button09
$Button09 = New-Object System.Windows.Forms.Button
$Button09.Location = New-Object System.Drawing.Point(20,270)
$Button09.Size = New-Object System.Drawing.Size(100,23)
$Button09.Text = 'GPEDIT'  
$Button09.Add_Click({start-process })
$Button09.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button09
$form.Controls.Add($Button09)

#Klick Button10
$Button10 = New-Object System.Windows.Forms.Button
$Button10.Location = New-Object System.Drawing.Point(20,300)
$Button10.Size = New-Object System.Drawing.Size(100,23)
$Button10.Text = 'New Package'  
$Button10.Add_Click({start-process })
$Button10.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button10
$form.Controls.Add($Button10)

#Klick Button11
$Button11 = New-Object System.Windows.Forms.Button
$Button11.Location = New-Object System.Drawing.Point(20,330)
$Button11.Size = New-Object System.Drawing.Size(100,23)
$Button11.Text = 'Button11'  
$Button11.Add_Click({start-process })
$Button11.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button11
$form.Controls.Add($Button11)

#Klick Button12
$Button12 = New-Object System.Windows.Forms.Button
$Button12.Location = New-Object System.Drawing.Point(20,360)
$Button12.Size = New-Object System.Drawing.Size(100,23)
$Button12.Text = 'Button12'  
$Button12.Add_Click({start-process })
$Button12.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button12
$form.Controls.Add($Button12)

#Klick Button13
$Button13 = New-Object System.Windows.Forms.Button
$Button13.Location = New-Object System.Drawing.Point(20,390)
$Button13.Size = New-Object System.Drawing.Size(100,23)
$Button13.Text = 'Button13'  
$Button13.Add_Click({start-process })
$Button13.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button13
$form.Controls.Add($Button13)

#Klick Button14
$Button14 = New-Object System.Windows.Forms.Button
$Button14.Location = New-Object System.Drawing.Point(20,420)
$Button14.Size = New-Object System.Drawing.Size(100,23)
$Button14.Text = 'Button14'  
$Button14.Add_Click({start-process })
$Button14.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button14
$form.Controls.Add($Button14)

#Klick Button15
$Button15 = New-Object System.Windows.Forms.Button
$Button15.Location = New-Object System.Drawing.Point(20,450)
$Button15.Size = New-Object System.Drawing.Size(100,23)
$Button15.Text = 'Button15'  
$Button15.Add_Click({start-process })
$Button15.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button15
$form.Controls.Add($Button15)

#Klick Button16
$Button16 = New-Object System.Windows.Forms.Button
$Button16.Location = New-Object System.Drawing.Point(130,30)
$Button16.Size = New-Object System.Drawing.Size(100,23)
$Button16.Text = 'CMD'  
$Button16.Add_Click({start-process })
$Button16.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button16
$form.Controls.Add($Button16)

#Klick Button17
$Button17 = New-Object System.Windows.Forms.Button
$Button17.Location = New-Object System.Drawing.Point(130,60)
$Button17.Size = New-Object System.Drawing.Size(100,23)
$Button17.Text = 'Powershell'  
$Button17.Add_Click({start-process })
$Button17.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button17
$form.Controls.Add($Button17)

#Klick Button18
$Button18 = New-Object System.Windows.Forms.Button
$Button18.Location = New-Object System.Drawing.Point(130,90)
$Button18.Size = New-Object System.Drawing.Size(100,23)
$Button18.Text = 'Powershell ISE'  
$Button18.Add_Click({start-process })
$Button18.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button18
$form.Controls.Add($Button18)

#Klick Button19
$Button19 = New-Object System.Windows.Forms.Button
$Button19.Location = New-Object System.Drawing.Point(130,120)
$Button19.Size = New-Object System.Drawing.Size(100,23)
$Button19.Text = 'Foits DB'  
$Button19.Add_Click({start-process })
$Button19.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button19
$form.Controls.Add($Button19)

#Klick Button20
$Button20 = New-Object System.Windows.Forms.Button
$Button20.Location = New-Object System.Drawing.Point(130,150)
$Button20.Size = New-Object System.Drawing.Size(100,23)
$Button20.Text = 'Button20'  
$Button20.Add_Click({start-process })
$Button20.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button20
$form.Controls.Add($Button20)

#Klick Button21
$Button21 = New-Object System.Windows.Forms.Button
$Button21.Location = New-Object System.Drawing.Point(130,180)
$Button21.Size = New-Object System.Drawing.Size(100,23)
$Button21.Text = 'Button21'  
$Button21.Add_Click({start-process })
$Button21.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button21
$form.Controls.Add($Button21)

#Klick Button22
$Button22 = New-Object System.Windows.Forms.Button
$Button22.Location = New-Object System.Drawing.Point(130,210)
$Button22.Size = New-Object System.Drawing.Size(100,23)
$Button22.Text = 'Button22'  
$Button22.Add_Click({start-process })
$Button22.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button22
$form.Controls.Add($Button22)

#Klick Button23
$Button23 = New-Object System.Windows.Forms.Button
$Button23.Location = New-Object System.Drawing.Point(130,240)
$Button23.Size = New-Object System.Drawing.Size(100,23)
$Button23.Text = 'Button23'  
$Button23.Add_Click({start-process })
$Button23.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button23
$form.Controls.Add($Button23)

#Klick Button24
$Button24 = New-Object System.Windows.Forms.Button
$Button24.Location = New-Object System.Drawing.Point(130,270)
$Button24.Size = New-Object System.Drawing.Size(100,23)
$Button24.Text = 'Button24'  
$Button24.Add_Click({start-process })
$Button24.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button24
$form.Controls.Add($Button24)

#Klick Button25
$Button25 = New-Object System.Windows.Forms.Button
$Button25.Location = New-Object System.Drawing.Point(130,300)
$Button25.Size = New-Object System.Drawing.Size(100,23)
$Button25.Text = 'Button25'  
$Button25.Add_Click({start-process })
$Button25.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button25
$form.Controls.Add($Button25)

#Klick Button26
$Button26 = New-Object System.Windows.Forms.Button
$Button26.Location = New-Object System.Drawing.Point(130,330)
$Button26.Size = New-Object System.Drawing.Size(100,23)
$Button26.Text = 'Button26'  
$Button26.Add_Click({start-process })
$Button26.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button26
$form.Controls.Add($Button26)

#Klick Button27
$Button27 = New-Object System.Windows.Forms.Button
$Button27.Location = New-Object System.Drawing.Point(130,360)
$Button27.Size = New-Object System.Drawing.Size(100,23)
$Button27.Text = 'Button27'  
$Button27.Add_Click({start-process })
$Button27.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button27
$form.Controls.Add($Button27)

#Klick Button28
$Button28 = New-Object System.Windows.Forms.Button
$Button28.Location = New-Object System.Drawing.Point(130,390)
$Button28.Size = New-Object System.Drawing.Size(100,23)
$Button28.Text = 'Button28'  
$Button28.Add_Click({start-process })
$Button28.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button28
$form.Controls.Add($Button28)

#Klick Button29
$Button29 = New-Object System.Windows.Forms.Button
$Button29.Location = New-Object System.Drawing.Point(130,420)
$Button29.Size = New-Object System.Drawing.Size(100,23)
$Button29.Text = 'Button29'  
$Button29.Add_Click({start-process })
$Button29.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button29
$form.Controls.Add($Button29)

#Klick Button30
$Button30 = New-Object System.Windows.Forms.Button
$Button30.Location = New-Object System.Drawing.Point(130,450)
$Button30.Size = New-Object System.Drawing.Size(100,23)
$Button30.Text = 'Button30'  
$Button30.Add_Click({start-process })
$Button30.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#C50F1F")  
$form.AcceptButton = $Button30
$form.Controls.Add($Button30)

#Klick Button31

$Button31 = New-Object System.Windows.Forms.Button
$Button31.Location = New-Object System.Drawing.Point(30,490)
$Button31.Size = New-Object System.Drawing.Size(170,23)
$Button31.Text = 'Neustart/Herunterfahren'  
$Button31.Add_Click({start-process Powershell.exe -ArgumentList "/C Shutdown /i $Computer" -NoNewWindow})  
$Button31.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.AcceptButton = $Button31
$form.Controls.Add($Button31)

#####################################################################################################
#CSVTelefonnummern auslesen, Ausgabe in richTextBox2

$richTextBox2 = New-Object System.Windows.Forms.RichTextBox
$richTextBox2.Anchor = 15
$richTextBox2.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 320
$System_Drawing_Point.Y = 60
$richTextBox2.Location = $System_Drawing_Point
$richTextBox2.Name = "richTextBox2"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 470
$System_Drawing_Size.Width = 730
$richTextBox2.Size = $System_Drawing_Size
$richTextBox2.TabIndex = 2
$richTextBox2.font = "lucida console"  
$richTextBox2.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.Controls.Add($richTextBox2)



######################################################################################################
#OK, Abbrechen, Exit Button

#Cancel Button
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(900,30)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'  
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)

#EXIT Button
$exitButton = New-Object System.Windows.Forms.Button
$exitButton.Location = New-Object System.Drawing.Point(980,30)
$exitButton.Size = New-Object System.Drawing.Size(75,23)
$exitButton.Text = 'Exit'  
$form.CancelButton = $exitButton
$form.Controls.Add($exitButton)

$Form.controls.AddRange(@($Button01,$Button02,$Button03,$Button04,$Button05,$Button06,$Button07,$Button08,$Button09,$Button10,$Button11,$Button12,$Button13,`
$Button14,$Button15,$Button16,$Button17,$Button18,$Button19,$Button20,$Button21,$Button22,$Button23,$Button24,$Button25,$Button26,$Button27,`
$Button28,$Button29,$Button30,$Button31,$cancelButton,$exitButton,$richTextBox2))

$form.Controls.Add($TabControl)
$form.Topmost = $True
$form.Add_Shown({$form.Activate()})


########################################################################################################
#TabPage2

#TabPage2
$tabPage2 = New-Object System.Windows.Forms.TabPage
$tabPage2.Name = "Tab2"  
$tabPage2.Text = "Rechner/Username Abfrage"  


$TabControl.TabPages.Add($tabPage1)
$TabControl.TabPages.Add($tabPage2) 

$TabControl.Add_SelectedIndexChanged({
    $selectedTab = $TabControl.SelectedTab
})

$TabPage2.Controls.AddRange(@())


$form.Controls.Add($textbox)
$form.Controls.Add($TabControl)
#$form.Topmost = $True
#$form.Add_Shown({$form.Activate()})
$InitialFormWindowState = $form.WindowState

$form.ShowDialog()| Out-Null
Member: mrjohndo
mrjohndo Feb 16, 2022 at 16:45:06 (UTC)
Goto Top
Ich habe jetzt eine Möglichkeit gefunden die csv auszulesen und in der richtextbox anzeigen zulassen ab Zeile 21 doch leider unsortiert, kann mir jemand ein Tip geben wie ich das mache.

#CSV Telefonnummern auslesen, Ausgabe in RichTextBox


$richTextBox2 = New-Object System.Windows.Forms.RichTextBox
$richTextBox2.Anchor = 15
$richTextBox2.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 320
$System_Drawing_Point.Y = 60
$richTextBox2.Location = $System_Drawing_Point
$richTextBox2.Name = "richTextBox2"  
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 470
$System_Drawing_Size.Width = 730
$richTextBox2.Size = $System_Drawing_Size
$richTextBox2.TabIndex = 2
$richTextBox2.font = "lucida console"  
$richTextBox2.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")  
$form.Controls.Add($richTextBox2)

$richTextBox2.Text = Import-CSV -Path C:\OPT\Foits\WICHTIGE_TELEFONNUMMERN_MASTER.CSV  |  Out-String
Member: colinardo
Solution colinardo Feb 16, 2022 updated at 17:43:02 (UTC)
Goto Top
Lass doch das Gefrickel mit einer Richtextbox, wie oben schon geschrieben gibt es für tabellarische Daten geeignetere Controls wie bspw. das DataGridview: (Spaltenname und Delimiter nach der die CSV sortiert werden soll anpassen (Zeile 21))...
function GenerateForm {
    Add-Type -A System.Windows.Forms

    $form1 = New-Object System.Windows.Forms.Form -P @{
        ClientSize = '800,600'  
        Text = "CSV-Data in Gridview darstellen"  
    }
    
    $dgv = New-Object System.Windows.Forms.DataGridView -P @{
        Location = '10,10'  
        Size = '780,540'  
        Anchor = 'Top,Left,Right,Bottom'  
    }
    $btn = New-Object System.Windows.Forms.Button -P @{
        Text = "Load data"  
        Location = '10,560'  
        Size = '180,30'  
        Anchor = 'Bottom,Left'  
        add_Click = {
            $data = New-Object System.Collections.ArrayList
            $data.AddRange(@(Import-CSV 'C:\OPT\Foits\WICHTIGE_TELEFONNUMMERN_MASTER.CSV' -Delimiter ";" | sort "MeinSpalte"))  
            $dgv.DataSource = $data
        }
    }
    $form1.Controls.AddRange(@($dgv,$btn))
    [void]$form1.ShowDialog()
}
GenerateForm
Oder wenn man mit den Spalten-Headern nachträglich die Sortierung ändern möchte:
function GenerateForm {
    Add-Type -A System.Windows.Forms

    $form1 = New-Object System.Windows.Forms.Form -P @{
        ClientSize = '800,600'  
        Text = "Data-Gridview"  
    }
    
    $dgv = New-Object System.Windows.Forms.DataGridView -P @{
        Location = '10,10'  
        Size = '780,540'  
        Anchor = 'Top,Left,Right,Bottom'  
    }
    $btn = New-Object System.Windows.Forms.Button -P @{
        Text = "Load data"  
        Location = '10,560'  
        Size = '180,30'  
        Anchor = 'Bottom,Left'  
        add_Click = {
            $csv = Import-CSV 'C:\OPT\Foits\WICHTIGE_TELEFONNUMMERN_MASTER.CSV' -Delimiter ";"   
            $dt = New-Object System.Data.DataTable            
            [string[]]$cols = ($csv | gm -MemberType NoteProperty).Name
            $dt.Columns.AddRange($cols)
            foreach($row in $csv) {
                $dr = $dt.NewRow()
                $cols | %{$dr[$_] = $row.$_}
                $dt.Rows.Add($dr)
            }
            $dgv.DataSource = $dt
        }
    }
    $form1.Controls.AddRange(@($dgv,$btn))
    [void]$form1.ShowDialog()
}
GenerateForm

screenshot

Sortieren macht man übrigens mit Sort-Object

Ich bin jetzt raus, genügend Beispiele wie man sowas vernünftig angeht hast du ja nun face-wink.

Für den Rest etwas Lektüre : Powershell Leitfaden für Anfänger

Viel Erfolg
Grüße Uwe
Member: mrjohndo
mrjohndo Feb 18, 2022 at 14:43:59 (UTC)
Goto Top
Danke für deine Hilfe