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

Printed on: April 25, 2024 at 14:04 o'clock

Member: Coreknabe
Coreknabe Sep 28, 2022 at 07:10:51 (UTC)
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ß
Member: mrjohndo1
mrjohndo1 Sep 28, 2022 at 07:17:56 (UTC)
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.
Member: erikro
Solution erikro Sep 28, 2022 at 07:40:09 (UTC)
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
Member: Penny.Cilin
Penny.Cilin Sep 28, 2022 at 09:20:26 (UTC)
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.
Member: mbehrens
mbehrens Sep 28, 2022 at 19:16:26 (UTC)
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.
Member: mrjohndo1
Solution mrjohndo1 Oct 19, 2022 at 10:16:09 (UTC)
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
#####################################################################################