Benutzer mit den meisten Antworten
PS-Script entschlanken - nur wie?

Frage
-
Guten Morgen zusammen,
folgendes Szenario: Es gibt sechs Ordnerpfade und je nach Pfad soll der Inhalt des Ordners anders abgearbeitet werden, wobei es nur zwei Methoden der Abarbeitung gibt.
- Ordner1 -> Methode1
- Ordner2 -> Methode2
- Ordner3 -> Methode2
- Ordner4 -> Methode2
- Ordner5 -> Methode1
- Ordner6 -> Methode2
Im Moment löse ich das noch so, dass die Ordner nach und nach abgearbeitet werden. Dadurch wird das Script aber ziemlich groß, pro Ordner bzw. Methode sind das ~120 Zeilen mit Code. Ich würde mir jetzt wünschen dass ich das Script so umbauen kann, dass die Ordner der einzelnen Methode über einen Codeblock abgearbeitet werden - nur wie?
Ich brauche zwei Blöcke, pro Methode einen, und pro Block muss ich dann mittels Schleife die zwei bzw. vier Ordnerpfade abarbeiten. Aber wie kriege ich das am besten hin?
Danke und Gruß
Steffen
Antworten
-
Hallo,
das kannst Du mit sogenannten Funktionen losen
get-help about_fu*
Grob sieht das dann so aus:
function Myfunc1 { # Dein Code fuer Methode 1 } function Myfunc2 { # Dein Code fuer Methode 2 } # je nach dem wie du ermittels welcher Ordner welche Methode braucht rufts du die entsprecheden Funktion auf if ($FolderName -eq "Ordner1") { Myfunc1 } if ($FolderName -eq "Ordner2") { Myfunc2 } # ...
Beste Gruesse
brima- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 20. Februar 2014 10:53
- Als Antwort markiert notadmin Donnerstag, 20. Februar 2014 14:27
-
Das ist jetzt sehr abstrakt beschrieben vielleicht zu abstrakt! ;-)
Verpacke deinen Code in Funktionen.
Eine Funktion ist genau dafür gedacht Code Teile wieder zu verwenden.
Der Code muss nur einmal in einem Skript / Modul stehen und alles was sich verändert wird über die Parameter als Argument übergeben.Pseudocode:
Function Methode1 { param( [String]$Path ) # Code der was macht hier .... Test-Path $Path } Function Methode2 { param( [String]$Path ) # Code der was macht hier .... Test-Path $Path } # Ordner Gruppen festlegen $OrdnerGruppe1 = 'Ordner1','Ordner3','Ordner5' $OrdnerGruppe1 = 'Ordner2','Ordner4','Ordner6' # für jeden Ordner in Gruppe 1 ForEach($Ordner in $OrdnerGruppe1) { # Funktion 1 aufrufen und Pfad übergeben Methode1 -Path $Ordner } # für jeden Ordner in Gruppe 2 ForEach($Ordner in $OrdnerGruppe2) { # Funktion 2 aufrufen und Pfad übergeben Methode2 -Path $Ordner }
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort vorgeschlagen Peter Kriegel Donnerstag, 20. Februar 2014 13:56
- Als Antwort markiert notadmin Donnerstag, 20. Februar 2014 14:28
Alle Antworten
-
Hallo,
das kannst Du mit sogenannten Funktionen losen
get-help about_fu*
Grob sieht das dann so aus:
function Myfunc1 { # Dein Code fuer Methode 1 } function Myfunc2 { # Dein Code fuer Methode 2 } # je nach dem wie du ermittels welcher Ordner welche Methode braucht rufts du die entsprecheden Funktion auf if ($FolderName -eq "Ordner1") { Myfunc1 } if ($FolderName -eq "Ordner2") { Myfunc2 } # ...
Beste Gruesse
brima- Als Antwort vorgeschlagen Denniver ReiningMVP, Moderator Donnerstag, 20. Februar 2014 10:53
- Als Antwort markiert notadmin Donnerstag, 20. Februar 2014 14:27
-
Das ist jetzt sehr abstrakt beschrieben vielleicht zu abstrakt! ;-)
Verpacke deinen Code in Funktionen.
Eine Funktion ist genau dafür gedacht Code Teile wieder zu verwenden.
Der Code muss nur einmal in einem Skript / Modul stehen und alles was sich verändert wird über die Parameter als Argument übergeben.Pseudocode:
Function Methode1 { param( [String]$Path ) # Code der was macht hier .... Test-Path $Path } Function Methode2 { param( [String]$Path ) # Code der was macht hier .... Test-Path $Path } # Ordner Gruppen festlegen $OrdnerGruppe1 = 'Ordner1','Ordner3','Ordner5' $OrdnerGruppe1 = 'Ordner2','Ordner4','Ordner6' # für jeden Ordner in Gruppe 1 ForEach($Ordner in $OrdnerGruppe1) { # Funktion 1 aufrufen und Pfad übergeben Methode1 -Path $Ordner } # für jeden Ordner in Gruppe 2 ForEach($Ordner in $OrdnerGruppe2) { # Funktion 2 aufrufen und Pfad übergeben Methode2 -Path $Ordner }
PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
auf der deutschsprachigen PowerShell Community
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+- Als Antwort vorgeschlagen Peter Kriegel Donnerstag, 20. Februar 2014 13:56
- Als Antwort markiert notadmin Donnerstag, 20. Februar 2014 14:28