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-ID: 312740

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

Ausgedruckt am: 24.11.2024 um 09:11 Uhr

129813
129813 16.08.2016 aktualisiert um 12:09:26 Uhr
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
Voiper
Voiper 16.08.2016 um 12:09:55 Uhr
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?
129813
129813 16.08.2016 aktualisiert um 12:11:37 Uhr
Goto Top
No, I edited my post above, search the board for filesystemwatcher. There are numerous scripts for this.
colinardo
Lösung colinardo 16.08.2016 aktualisiert um 13:04:38 Uhr
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
Voiper
Voiper 16.08.2016 um 13:06:22 Uhr
Goto Top
Vielen Dank, für die superschnellen Antworten. Werde ich im Laufe der Woche testen und mich dann zurückmelden.
Voiper
Voiper 16.08.2016 um 15:10:33 Uhr
Goto Top
Script ist getestet und funktioniert. (Nach kleiner Anpassung von colinardo :P )

Vielen Dank.