Behandelte Themen unter "Das Filesystem"

          0 Einleitung
             Beispiel 1: Erzeugen einer Ordnerstruktur mit leeren und zufällig gefüllten Dateien
             Beispiel 2: Erzeugung großer Textdateien

          1 Pfade
             1.1 spezielle Pfade
                   1.1.1 wo sind "spezielle Pfade" hinterlegt
                            1.1.1.1 automatic Variables
                                        Beispiel 1a: Liste der Pfadvariablen unter den "automatic variables"
                                        Beispiel 1b: Werte der Pfadvariablen
                                        Beispiel 2: Provider des aktuellen Pfades bestimmen
                            1.1.1.2 Umgebungsvariablen - Environment Variables
                                        Beispiel 1: Anzeige der Umgebungsvariablen
                                        Beispiel 2: Setzen/ Ändern von Umgebungsvariablen
                                        Beispiel 3: Auslesen von Umgebungsvariablen
                            1.1.1.3 GetFolderpath - Specialfolder
                                        Beispiel 1: Anzeige der Specialfolder mit Pfad
                                        Beispiel 2: Zuweisen eines Specialfolder-Pfades zu einer Variablen
                   1.1.2 das aktuelle Arbeitsverzeichnis und das eigene Skript
                            Beispiel 1a: Ändern und Abfragen des aktuellen Powershellverzeichnisses
                            Beispiel 1b: Ändern und Abfragen des aktuellen .Net Verzeichnisses
                            Beispiel 1c: Ändern des Arbeitsverzeichnisses und Zurücksetzen 
                            Beispiel 2: Ermitteln des eigenen Skriptnamens mit Pfad
             1.2 cmdlets zur Pfadbearbeitung
                   Beispiel 1: Anzeige der cmdlets zur Pfadbearbeitung
                   Beispiel 2: zentrales Logverzeichnis oberhalb des temp-Verzeichnisses erstellen, in dem jedes Skript ein spezifisches Logfile ablegt
             1.3 Pfade mit Sonderzeichen
                   Beispiel 1: Navigieren zu einem Pfad mit dem Parameter "-Literalpath"
                   Beispiel 2a: Workaround zum cmdlet "get-acl", das kein -Literalpath enthält
                   Beispiel 2b: Workaround mit dem cmdlet New-PSdrive für das cmdlet "get-acl", das kein -Literalpath enthält 

         2 Laufwerke, Ordner, Dateien und Freigaben
            2.1 Dateien und Ordner
                  Beispiel 1: Erstellen von Übungsverzeichnissen
                  2.1.1 Inhalt und Struktur von Verzeichnissen
                           Beispiel 1: Größe eines Verzeichnisses
                           Beispiel 2: Dateitypen im Verzeichnis
                           Beispiel 3: Speicherplatz pro Dateityp im Verzeichnis
                           Beispiel 4: Alterstruktur der Dateien im Verzeichnis
                  2.1.2 einfache Operationen mit Dateien und Verzeichnissen (Löschen, Kopieren, Verschieben, Erstellen)
                           2.1.2.1 Erstellen und Löschen von Objekten im Filesystem
                                       Beispiel 1a: Anlage eines Verzeichnisses (Fileprovider)
                                       Beispiel 1b: Anlage eines Verzeichnisses (.Net-Klasse Directory)
                                       Beispiel 1c: Anlage eines Verzeichnisses (FileSystemObject)
                                       Beispiel 2: explizite Anlage einer Datei
                                       Beispiel 3a: automatische Anlage einer Datei 
                                       Beispiel 3b: automatische Anlage einer Datei (Set-Content)
                                       Beispiel 3c: automatische Anlage einer Datei (Out-File)
                                       Beispiel 4: Löschen eines Verzeichnisses
                           2.1.2.2 Kopieren und Verschieben von Dateien und Verzeichnissen
                                       Beispiel 1: Kopieren einer Verzeichnisstruktur mit Robocopy
                           2.1.2.3 Existenzprüfung von Elementen
                                       Beispiel 1: Verschiedene Arten die Existenz von Ordnern, Dateien oder Laufwerken zu prüfen
                           2.1.2.4 Komprimieren und Dekomprimieren von Dateien und Ordnern
                                       Beispiel 1: ein Verzeichnis samt Inhalt komprimieren (compress.exe)
                                       Beispiel 2: Komprimieren bestimmter Dateitypen in einem Verzeichnis (CIM_DataFile) 
                                       Beispiel 3: Komprimieren eines Verzeichnisses (Win32_Directory)
                           2.1.2.5 Packen (Zippen) von Verzeichnissen und Dateien
                                       Beispiel 1: Anzeige der Zip-cmdlets der CommunityExtension
                                       2.1.5.2.1 Packen mit den CommunityExtensions
                                                      Beispiel 1: Packen eines Verzeichnisses mit Unterverzeichnissen und Pfaden
                                                      Beispiel 2: Packen eines Verzeichnisses mit Unterverzeichnissen ohne Pfade
                                                      Beispiel 3: Mehrere Ordner eines Verzeichnisse getrennt zippen
                                       2.1.5.2.2 Packen mit 7-Zip
                                                      Beispiel 1: Packen eines Verzeichnisses mit 7-Zip
                                                      Beispiel 2: Hinzufügen weiterer Elemente in das Archiv
                                       2.1.5.2.3 Packen mit der .Net GZipStream-Klasse
                                                      Beispiel 1a: Komprimieren einer Datei mit der GZipStream-Klasse (Framework 2)
                                                      Beispiel 1b: Komprimieren einer Datei mit der GZipStream-Klasse (Framework 2)
                                                      Beispiel 1c: Dekomprimieren einer Datei mit der GZipStream-Klasse (Framework 2)
                                                      Beispiel 2a: Komprimieren einer Datei mit der GZipStream-Klasse (Framework 4)
                                                      Beispiel 2b: Dekomprimieren einer Datei mit der GZipStream-Klasse (Framework 4)
                  2.1.3 Eigenschaften von Dateien und Ordnern
                           2.1.3.1 Attribute von Verzeichnissen und Dateien
                                       Beispiel 1: Eigenschaften und Methoden von Get-Item
                                       Beispiel 2a: Attribute eines Verzeichnisses (Get-Item)
                                       Beispiel 2b: Attribute eines Verzeichnisses (Win32_Directory)
                                       Beispiel 3: Attribute einer Datei
                                       Beispiel 4a: Zeigt ein Pfad auf eine Datei oder ein Directory? - Lösung über das Fileattribut "Directory"
                                       Beispiel 4b: Zeigt ein Pfad auf eine Datei oder ein Directory? - Lösung über die Codeproperty "Mode"
                                       Beispiel 4c: Zeigt ein Pfad auf eine Datei oder ein Directory? - Lösung über die Noteproperty "PSIsContainer"
                                       Beispiel 5a: Unter einem Verzeichnis alle Ordner filtern
                                       Beispiel 5b: Unter einem Verzeichnis alle leeren Ordner filtern 
                                       Beispiel 5c: Unter einem Verzeichnis alle Dateien filtern
                                       Beispiel 6a: Alle readonly-Dateien in ein Array schreiben
                                       Beispiel 6b: Alle readonly-Dateien in ein Array schreiben und den Readonly-Flag entfernen
                           2.1.3.2 Zeiteigenschaften (CreationTime, LastAccessTime, LastWriteTime)
                                       Beispiel 1: Zeitstempel einer Datei mit .Net und COM auslesen
                                       Beispiel 2: Zeitstempel einer Datei verändern
                                       Beispiel 3a: Zeitstempel einer Datei mit einem festen Datum vergleichen
                                       Beispiel 3b: Zeitstempel einer Datei mit einem relativen Datum vergleichen
                                       Beispiel 4a: Filtern aller Dateien älter als 30 Tage
                                       Beispiel 4b: Etwas Statistik über die Dateien, die älter als 30 Tage sind (Measure-Objekt)
                                       Beispiel 4c: Dateien, die älter als 30 Tage sind, in ein Archivverzeichnis verschieben (move-item)
                                       Beispiel 4d: Dateien, die älter als 30 Tage sind, in ein Archivverzeichnis kopieren (Robocopy)
                                       Beispiel 4e: Dateien, die älter als 30 Tage sind, in eine Archivdatei (ZIP-Datei) kopieren 
                           2.1.3.3 Filtern nach Namensmustern
                                       Beispiel 1a: Suche nach Dateien, die einen bestimmten String im Namen tragen
                                       Beispiel 1b: Suche nach Dateien mit einem einfachen regulären Ausdruck
                                       Beispiel 2: Filtern mit den Parametern -Include und -Recurse von Get-Childitem
            2.2 Logische Laufwerke
                  Beispiel 1: Freien und belegten Speicherplatz anzeigen (WMI-Klasse: Win32_LogicalDisk )
                  Beispiel 2: Freien und belegten Speicherplatz anzeigen (.Net-Klasse: DriveInfo)
            2.3 Freigaben/ Shares
                  Beispiel 1: Anlage eines neuen Shares
                  Beispiel 2: Löschen eines Shares
                  Beispiel 3: Eigenschaften eines Shares
                  Beispiel 4a: Auf welchem Verzeichnis liegt ein Share (mit "Associators of")
                  Beispiel 4b: Auf welchem Verzeichnis liegt ein Share (mit "Select *")
                  Beispiel 5: Welche Shares liegen auf einem Verzeichnis
                  Beispiel 6: Welche User sind mit einem Share verbunden

         3 Datei- und Verzeichnisberechtigungen
            3.1 Anzeige von Berechtigungen
                  Beispiel 1a: Berechtigungen eines Verzeichnisses anzeigen (Get-Acl)
                  Beispiel 1b: Berechtigungen eines Verzeichnisses anzeigen (.Net Klasse DirectorySecurity)
                  Beispiel 2:   Formatierte Ausgabe der ACL (Darstellungsformen der FileSystemRights)
            3.2 Berechtigungen auf Verzeichnisse und Dateien setzen
                  3.2.1 etwas Theorie über ACL und ACE
                           Beispiel 1a: ACL eines Verzeichnisses
                           Beispiel 1b: Eine einzelne ACE
                           3.2.1.1 FileSystemRights
                                       Beispiel 1: Filesystemrights als Text und Bits (Flags)
                           3.2.1.2 AccessControlType
                                       Beispiel 1: Anzeige der Werte aus AccessControlType
                           3.2.1.3 IdentityReference
                                       Beispiel 1: Bestimmen der zurückgegebenen Klasse
                           3.2.1.4 IsInherited
                           3.2.1.5 InheritanceFlags
                                       Beispiel 1: Anzeige der InheritanceFlags
                           3.2.1.6 PropagationFlags
                                       Beispiel 1: Anzeige der PropagationFlags
                  3.2.2 Berechtigungen verändern
                           3.2.2.1 ACLs verändern
                                       Beispiel 1: Überprüfen der Berechtigungen eines Users oder Gruppe 
                                       Beispiel 2: Übertragen der gesamten ACL mit Get-ACL und Set-ACL
                                       Beispiel 3: Löschen aller ACEs eines Users oder Gruppe von einem Verzeichnis
                           3.2.2.2 ACE erzeugen und als Berechtigung setzen
                                       Beispiel 1a: Erzeugen einer ACE und Setzen 
                                       Beispiel 1b: Abfrage der neuen ACL mit der neuen ACE
                           3.2.2.3 Vererbung unterbrechen
                                       Beispiel 1: Vererbte Berechtigungen durch vererbbare Berechtigungen ersetzen
                                       Beispiel 2: Löschen vererbter Berechtigungen
           3.3 Besitzer (Owner)
                 Beispiel 1: Anzeige des Owners einer Datei
                 Beispiel 2a: Setzen des angemeldeten Benutzers als neuen Owner
                 Beispiel 2b: Setzen eines beliebigen Benutzers oder einer 
                                    beliebigen Gruppe als neuen Owner

          4 Filemonitoring
             4.1 Einleitung zum Filemonitoring
                   Beispiel 1: Testskript für die Überwachung
             4.2 NTFS-Auditing
             4.3 Eventmonitoring
                   4.3.1 FileMonitoring mit WMI
                            Beispiel 1a: Erstellen einer Datei lokal überwachen (__InstanceCreationEvent)
                            Beispiel 1b: Erstellen einer Datei remote überwachen (__InstanceCreationEvent) 
                            Beispiel 1c: Erstellen einer Datei lokal überwachen -> Ausgabe in Eventlog
                            Beispiel 2: Löschen einer Datei überwachen (__InstanceDeletionEvent) 
                   4.3.2 FileMonitoring mit der .Net-Klasse FileSystemWatcher
                            Beispiel 1: FileSystemWatcher (Register-ObjectEvent)
                            Beispiel 2: FileSystemWatcher (WaitForChanged) 
                            Beispiel 3: Start-FileSystemWatcher aus dem Powershellpack
               4.4 Filemonitoring mit get-content
                     Beispiel 1: Textfile auf neue Einträge überwachen
               4.5 Monitoring mit dem Process Monitor (Sysinternals)
                     4.5.1 Vorbereitungen 
                     4.5.2 Filtereinstellungen
                     4.5.3 Ergebnis
                     4.5.4 Start des Processmonitors per Batch

 ***********************************************************************************