mrjohndo1
Goto Top

Powershell Script aufteilen

Hallo an alle,

ich habe eine Frage, kann man ein Skript aufteilen ?

Mein Skript hat bis jetzt über 4000 Zeilen auf 3 TabPages aufgeteilt und es wird noch größer.
Mein Gedanke war:
Script.ps1 enthält
Forms, Statusbar, TabControl, TabPage1 - 10
unter jedem TabPage wird das Skript eingelesen mit z.b.
Import-Module -Name C:\Hardware.ps1 -Verbose.

Ich wollte das Skript verkleinern um es besser zu bearbeiten bzw wenn ein anderer sich was eigenes bauen möchte kann er ein sich ein TabPage nehmen es bearbeiten ohne das es ein anderer stört.

Geht sowas und wie habe im Internet recherchiert und was gefunden aber das funktioniert nicht, vielleicht kann mir jemand ein Tip geben

Content-Key: 4085633271

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

Ausgedruckt am: 07.05.2024 um 21:05 Uhr

Mitglied: Coreknabe
Coreknabe 28.09.2022 um 09:10:51 Uhr
Goto Top
Moin,

und Du meinst nicht, dass Dein Weg das Ganze eher unnötig verkompliziert? Die Abschnitte ordentlich dokumentieren (Zeilen ausdokumentieren) macht für mich mehr Sinn.

Gruß
Mitglied: mrjohndo1
mrjohndo1 28.09.2022 um 09:17:56 Uhr
Goto Top
bei über 4000 Zeilen im Moment wird es zuviel, vor allem hoch und runterscrollen wenn man was sucht.
Es soll da eine Funktion geben und die suche ich.
Vorteil ist auch wenn ein anderer Kollege was bauen möchte einfacher zu Verwalten.
Mitglied: erikro
Lösung erikro 28.09.2022 um 09:40:09 Uhr
Goto Top
Moin,

ja, das geht. Die Möglichkeiten sind hier recht übersichtlich dargestellt:
https://www.sepago.de/blog/powershell-scripts-funktionen-und-module-einb ...
https://www.msxfaq.de/code/powershell/psmodular.htm

hth

Erik
Mitglied: Penny.Cilin
Penny.Cilin 28.09.2022 um 11:20:26 Uhr
Goto Top
Moin,

das nennt man modulares Programmieren / Skripten. Das kann man mit allen Skriptsprachen machen.
Und ja es geht auch mit Batch.

Gruss Penny.
Mitglied: mbehrens
mbehrens 28.09.2022 um 21:16:26 Uhr
Goto Top
Zitat von @mrjohndo1:

Masochisten entwickeln auch GUI Anwendungen in PowerShell face-wink

Mein Skript hat bis jetzt über 4000 Zeilen auf 3 TabPages aufgeteilt und es wird noch größer.

Für den Anfang bietet sich ein Editor, der Code Folding beherrscht, an.
Mitglied: mrjohndo1
Lösung mrjohndo1 19.10.2022 um 12:16:09 Uhr
Goto Top
Ich habe die Lösung gefunden.

*.ps1 enthält Forms, TabControl und Tabpages mit $MainForm.ShowDialog() | Out-Null am Ende
*.psm1 - ..... enthält den ganzen Code ohne $MainForm.ShowDialog() | Out-Null für Tabpage1 - 6 den Code in einem eigenen Fenster.

*.ps1 steht unter jedem Tabpage Abfrage
Import-Module -Force "C:\...\....\....\TabPage_6_Frei.psm1"
(Pfad in der sich die psm1 befindet, ich habe ein Ordner erstellt in den alles liegt)
#####################################################################################
# TabPage7
#####################################################################################
#TabPage Frei verfügbar

$tabPage5 = New-Object System.Windows.Forms.TabPage #TabPage Frei
$tabPage5.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 4
$System_Drawing_Point.Y = 22
$tabPage5.Location = $System_Drawing_Point
$tabPage5.Name = "tabPage5"  
$System_Windows_Forms_Padding = New-Object System.Windows.Forms.Padding
$System_Windows_Forms_Padding.All = 3
$System_Windows_Forms_Padding.Bottom = 3
$System_Windows_Forms_Padding.Left = 3
$System_Windows_Forms_Padding.Right = 3
$System_Windows_Forms_Padding.Top = 3
$tabPage5.Padding = $System_Windows_Forms_Padding
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 205
$System_Drawing_Size.Width = 445
$tabPage5.Size = $System_Drawing_Size
$tabPage5.TabIndex = 2
$tabPage5.Text = "Frei"  
$tabPage5.BackColor = [System.Drawing.ColorTranslator]::FromHtml("#CCCCCC")  
$tabControl1.Controls.Add($tabPage5)

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

Import-Module -Force "C:\....\....\....\TabPage_6_Frei.psm1"  

#Ende TabPage7
#####################################################################################