voiper
Goto Top

Automatisierter Default-Ordner in jedem Unterordner

Hallo Zusammen,


wir basteln im Unternehmen aktuell unsere Ordnerstruktur um und es kam der Wunsch auf, das in jedem Abteilungsordner, sowie deren Unterordnern ein Archivordner erstellt werden soll.

Damit das aber nicht mit jedem Ordner händisch passiert, wollte ich das gerne automatisieren. Leider geben weder der einfache Server-Manager noch der FSRM eine solche Funktion her.

Kennt von Euch jemand ein Tool, das solche Funktionen ermöglicht (vor allem dauerhaft, wenn in Zukunft neue Ordner erstellt werden)? Oder geht das nur per VBS ?

Es geht dabei um den Standard File-Server auf Windows 2012R2.

Vielen Dank,

Littlebird face-smile

Content-Key: 312740

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

Printed on: April 23, 2024 at 22:04 o'clock

Mitglied: 129813
129813 Aug 16, 2016 updated at 10:09:26 (UTC)
Goto Top
Powershell:
Can be run via task scheduler
gci "D:\Abteilungsordner" -Dir -Recurse -Exclude 'Archiv' | ?{!(Test-Path "$($_.FullName)\Archiv")} | %{md "$($_.Fullname)\Archiv" -force}  
You can also write a filesystemwatcher which monitors all folders and creates the folder live.

Regards
Member: Voiper
Voiper Aug 16, 2016 at 10:09:55 (UTC)
Goto Top
Das müsste aber jedesmal manuell ausgeführt werden (oder eben per Cron). Gibt es eine Möglichkeit, die beim Anlegen eines neuen Ordners, das Script ausführt?
Mitglied: 129813
129813 Aug 16, 2016 updated at 10:11:37 (UTC)
Goto Top
No, I edited my post above, search the board for filesystemwatcher. There are numerous scripts for this.
Member: colinardo
Solution colinardo Aug 16, 2016 updated at 11:04:38 (UTC)
Goto Top
Hallo Littlebird,

Beispiel für einen FileSystemWatcher der bei neuen Ordnern innerhalb eines Ordnertrees darin automatisch einen Unterordner erstellt (mit Außnahme wenn er innerhalb eines Archiv-Ordners erstellt wird, sonst gäbs ja eine Schleife ohne weitere Maßnahme)
# Ordner der überwacht wird (inkl. Unterordner)
$folder = 'D:\Abteilungsordner'  
# Namen für des neuen Archivordners
$global:archive_foldername = 'Archiv'  
# -----------
if (Get-EventSubscriber FolderCreated -EA SilentlyContinue){Unregister-Event FolderCreated}
$fsw = New-Object IO.FileSystemWatcher $folder, '*' -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'Directoryname'}   

Register-ObjectEvent $fsw Created -SourceIdentifier FolderCreated -Action { 
    $fullpath = $Event.SourceEventArgs.FullPath
    $timeStamp = $Event.TimeGenerated.toString('G')  
    # erstelle nur einen Archivordner wenn er nicht innerhalb eines 'Archiv'-Ordners erstellt wird 
    if ($fullpath -notmatch "\\$([regex]::Escape($archive_foldername))(\\|$)"){  
        Write-Host "Der Ordner '$fullpath' wurde um '$timeStamp' erstellt. Erstelle darin einen Archivordner." -fore green  
        md "$fullpath\$global:archive_foldername" -Force -EA Continue  
    }
}
cls
write-host "Warte auf neue erstellte Ordner..." -fore green  
while($true){
    sleep 1
}
Grüße Uwe
Member: Voiper
Voiper Aug 16, 2016 at 11:06:22 (UTC)
Goto Top
Vielen Dank, für die superschnellen Antworten. Werde ich im Laufe der Woche testen und mich dann zurückmelden.
Member: Voiper
Voiper Aug 16, 2016 at 13:10:33 (UTC)
Goto Top
Script ist getestet und funktioniert. (Nach kleiner Anpassung von colinardo :P )

Vielen Dank.