Der ultimative Ordner-Erstellungs-Showdown mit PowerShell

Die Gedanken sind wie Schatten. Sie folgen uns, egal wohin wir gehen. Sie zeigen uns wer wir sind aber manchmal verstehen wir sie erst, wenn wir unser PowerShell-Skript geschrieben haben.

 

Ich habe mir Gedanken darüber gemacht, wie ich ein PowerShell-Skript erstellen kann welches in allen Unterordnern einen neuen Ordner erstellt und die Rechte eines anderen Ordners kopiert und übernimmt. Nach vielen Überlegungen und  vermehrtem ausprobieren habe ich eine Lösung gefunden, die wie folgt aussieht:

 

 

 

 

 

Hier ist eine detailliertere Erklärung des Codes:

 

1. Die Anweisung $MAOrdner = Get-ChildItem -Path "C:\Lohn" -Directory liest alle Unterverzeichnisse des Verzeichnisses "C:\Lohn" ein und speichert sie in einer Liste namens "$MAOrdner". Der Befehl Get- ChildItem liest die Elemente (in diesem Fall Verzeichnisse) im angegebenen Pfad ein, während der Parameter -Directory angibt, dass nur Verzeichnisse gelesen werden sollen.

 

2. Die Schleife foreach($MA in $MAOrdner) durchläuft jedes Element in der Liste "$MAOrdner". In jedem Durchlauf wird das aktuelle Element in der Schleife in der Variable "$MA" gespeichert.

 

3. Die Variable "$files" wird definiert als der Pfad des aktuellen Unterverzeichnisses in der Schleife, zusammen mit dem Pfad "C:\Lohn". Dies wird mit der Anweisung $files = "C:\Lohn\" + $MA erreicht. Der +- Operator konkateniert (verbindet) die beiden Strings, sodass der Pfad des aktuellen Unterverzeichnisses an den Pfad "C:\Lohn" angehängt wird.

 

4. Es wird überprüft, ob das Verzeichnis "ArbeitszeitErfassung" im Verzeichnis "$files" bereits existiert. Dies wird mit der Anweisung (Test-Path "$files\ArbeitszeitErfassung" -PathType Container) -ne $True überprüft.

Der Befehl Test-Path überprüft, ob der angegebene Pfad vorhanden ist, während der Parameter -PathType Container angibt, dass nur Verzeichnisse überprüft werden sollen. Wenn das Verzeichnis nicht existiert, gibt der Befehl $True zurück, andernfalls $False.

Der „-ne“-Operator überprüft, ob das Ergebnis ungleich $True ist.

Wenn das Verzeichnis nicht existiert, wird das Verzeichnis erstellt eine Meldung ausgegeben, dass es erstellt wurde. Wenn es bereits existiert, wird eine Meldung ausgegeben, dass es bereits existiert.

 

5. Schließlich werden die Berechtigungen des Ordners "Krankenmeldungen" im aktuellen Unterverzeichnis mit dem Befehl "Get-Acl" ausgelesen und auf den neu angelegten Ordner "ArbeitszeitErfassung" mithilfe des Befehls "Set-Acl" übertragen.

Kommentare sind geschlossen