Ergebnis 1 bis 6 von 6
  1. Beitrag #1
    Themenstarter
    Admiral
    Special
    Admiral
    Avatar von Sightus
    • Mein DC

      Sightus beim Distributed Computing

      Aktuelle Projekte: Einige
      Rechner: Neumodische Taschenrechner mit grafischer Oberfläche
      Mitglied der Kavallerie: Nein
      BOINC-Statistiken:

    Registriert seit
    01.12.2006
    Beiträge
    1.174
    Danke Danke gesagt 
    76
    Danke Danke erhalten 
    5

    Löschen von Ordnern bestimmer&gelöschter Besitzer

    Moin,

    ich habe ein paar (ca. 2.5k) Ordner samt Unterordner und Files von nicht mehr vorhandenen Usern. Werden User aus dem AD gelöscht, während diese Besitzer dieser Ordner waren, dann wird der Besitzer durch einen String wie z.B. S-1-5-21-4534759393.... ersetzt. Ich möchte nun irgendwie eine Prozedur haben (batch oder powershell), die mir alle Ordner solcher Karteileichen in einem bestimmten Pfad löscht. Von Hand geht das natürlich leicht, aber ich würde das gerne automatisieren.

    Hat da jemand einen Tipp?

    Danke und Gruß

  2. Beitrag #2
    Grand Admiral
    Special
    Grand Admiral
    Avatar von Dalai
    • Mein System
      Notebook
      Modell: Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
      Desktopsystem
      Prozessor: AMD Athlon X4 880K (Godavari)
      Mainboard: Gigabyte GA-F2A88X-D3HP
      Kühlung: Noctua NH-U9B mit 2x NF-B9 Redux PWM (an NA-YC1)
      Arbeitsspeicher: G.Skill Ares F3-2133C11D-16GAR: 2x 8 GiB DDR3-2133 (3,5 GiB nutzbar mit x86)
      Grafikkarte: Gigabyte GeForce GTX 650 Ti, 1024 MiB, Rev 2.0
      Display: Dell U2410, 24 Zoll, IPS, 16:10
      SSD(s): Samsung 850 Evo 250 GB
      Festplatte(n): WD20EZRZ (WD Blue) 2000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
      Optische Laufwerke: Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
      Soundkarte: Creative SoundBlaster Audigy 2 ZS PCI
      Gehäuse: Lian Li PC-8NB Midi-Tower
      Netzteil: Enermax EMP400AGT MaxPro 400W
      Betriebssystem(e): Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
      Browser: Mozilla Firefox mit diversen Erweiterungen
      Sonstiges: 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)

    Registriert seit
    14.06.2004
    Ort
    Meiningen, Thüringen
    Beiträge
    6.970
    Danke Danke gesagt 
    390
    Danke Danke erhalten 
    47
    Sowas ähnliches hab ich vor einigen Monaten für Windows Firewall-Regeln gemacht, weil MS offensichtlich unfähig ist, Windows ordentlich zu programmieren. Hier das Skript, das ich dafür verwende:
    Code:
    Param([switch] $dryRun
    )
    
    Function SidToUser
    {
        Param(
             [Parameter(Mandatory=$true)] [string] $SID
        )
    
        $objSID = New-Object System.Security.Principal.SecurityIdentifier(${SID})
        try
        {
            $objUser = $objSID.Translate([System.Security.Principal.NTAccount])
            return $objUser.Value
        }
        catch
        {
            return $Null
        }
    }
    
    $FWcount=0
    
    Write-Host "`r`nGetting firewall rules from the system ..."
    $FWrules = $(Get-NetFirewallRule | Where-Object Owner -Like "S-1-5-*")
    
    Write-Host ""
    foreach($rule in ${FWrules})
    {
        $sid=$rule.Owner
        if (! (SidToUser "${sid}") )
        {
            Write-Host -NoNewline "Deleting rule "
            Write-Host -NoNewline -ForegroundColor Cyan "$($(${rule}).DisplayName) "
            Write-Host -NoNewline "in group "
            Write-Host -NoNewline -ForegroundColor Cyan "$($($rule).DisplayGroup) "
            Write-Host -NoNewline "of user with unknown SID "
            Write-Host -ForegroundColor Cyan "${sid}"
            $FWcount++
            if (!$dryRun)
            {
                ${rule} | Remove-NetFirewallRule
            }
        }
    }
    Write-Host -NoNewline "`r`nDeleted "
    Write-Host -NoNewline -ForegroundColor Cyan "${FWcount} "
    Write-Host "rules.`r`n"
    Start-Sleep 5
    Im Prinzip müsstest du nur den Befehl Get-NetFirewallRule ersetzen durch einen Mechanismus zum Iterieren/Auflisten über/von Verzeichnisse(n). Vielleicht mit Get-Acl oder sowas, denn das bietet auch einen Owner. Ob die Funktion SidToUser auch in einem AD funktioniert, kann ich nicht beurteilen, aber ich kann mich erinnern, dass ich bei meiner Suche vor einigen Monaten auch Mechanismen fand, die den SID an einem AD testen. Und das Löschen muss dann natürlich nicht mit Remove-NetFirewallRule erfolgen, is ja klar .

    Vielleicht genügt das erstmal als Denkanstoß .

    Grüße
    Dalai
    Geändert von Dalai (31.08.2018 um 18:37 Uhr)
    Echte Hilfe kann's nur bei Rückmeldungen geben! Ich will schließlich auch dazulernen.
    Jeder Beitrag - auch dieser - kann mit der Waage unter dem Avatar bewertet werden.


  3. Beitrag #3
    Grand Admiral
    Special
    Grand Admiral
    Avatar von BoMbY
    • Mein System
      Desktopsystem
      Prozessor: Ryzen 2700X
      Mainboard: ASUS Crosshair VI Hero
      Kühlung: CoolerMaster MasterLiquid Pro 280
      Arbeitsspeicher: 2x16 GB, G.Skill F4-3200C14D-32GVK @ 3200 14-14-14-34-2T
      Grafikkarte: RX Vega 64 Liquid
      Display: Samsung CHG70, 32", 2560x1440@144Hz, FreeSync2
      SSD(s): Samsung 850 EVO 512GB, Samsung 840 EVO 1TB, Samsung 960 EVO 1TB
      Optische Laufwerke: Sony BD-5300S-0B (eSATA)
      Gehäuse: Fractal Design - Define C
      Netzteil: Enermax Platimax 750W
      Betriebssystem(e): Windows 10
      Browser: Firefox

    Registriert seit
    22.11.2001
    Ort
    Aachen
    Beiträge
    4.754
    Danke Danke gesagt 
    27
    Danke Danke erhalten 
    138
    Am einfachsten wäre vermutlich eine simple Batch mit "del X:\Users\S-1-5-*" über den Task Scheduler jede Stunde, oder so, auszuführen ...
    @AMD: You could always send me an NDA and your prototypes, so I could test your new stuff for you, instead of searching for leaks about it.

  4. Beitrag #4
    Grand Admiral
    Special
    Grand Admiral
    Avatar von Dalai
    • Mein System
      Notebook
      Modell: Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
      Desktopsystem
      Prozessor: AMD Athlon X4 880K (Godavari)
      Mainboard: Gigabyte GA-F2A88X-D3HP
      Kühlung: Noctua NH-U9B mit 2x NF-B9 Redux PWM (an NA-YC1)
      Arbeitsspeicher: G.Skill Ares F3-2133C11D-16GAR: 2x 8 GiB DDR3-2133 (3,5 GiB nutzbar mit x86)
      Grafikkarte: Gigabyte GeForce GTX 650 Ti, 1024 MiB, Rev 2.0
      Display: Dell U2410, 24 Zoll, IPS, 16:10
      SSD(s): Samsung 850 Evo 250 GB
      Festplatte(n): WD20EZRZ (WD Blue) 2000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
      Optische Laufwerke: Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
      Soundkarte: Creative SoundBlaster Audigy 2 ZS PCI
      Gehäuse: Lian Li PC-8NB Midi-Tower
      Netzteil: Enermax EMP400AGT MaxPro 400W
      Betriebssystem(e): Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
      Browser: Mozilla Firefox mit diversen Erweiterungen
      Sonstiges: 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)

    Registriert seit
    14.06.2004
    Ort
    Meiningen, Thüringen
    Beiträge
    6.970
    Danke Danke gesagt 
    390
    Danke Danke erhalten 
    47
    @BoMbY:
    Nee, so einfach geht's nicht.

    Längere Erklärung: Jedes Dateisystemobjekt hat irgendeinen Besitzer, und dieser Besitzer hat einen SID (Security Identifier). Üblicherweise sieht man den Besitzer in den Eigenschaften des Dateisystemobjekts (Register Sicherheit). Wenn das zugehörige Nutzerkonto existiert, sieht man dort den Namen des Kontos. Wenn ein Nutzerkonto gelöscht wird, kann dieser SID nicht mehr aufgelöst werden, so dass der SID statt des Namens als Besitzer angezeigt wird. An den Dateisystemobjekten an sich ändert sich gar nichts.

    Grüße
    Dalai
    Echte Hilfe kann's nur bei Rückmeldungen geben! Ich will schließlich auch dazulernen.
    Jeder Beitrag - auch dieser - kann mit der Waage unter dem Avatar bewertet werden.


  5. Beitrag #5
    Themenstarter
    Admiral
    Special
    Admiral
    Avatar von Sightus
    • Mein DC

      Sightus beim Distributed Computing

      Aktuelle Projekte: Einige
      Rechner: Neumodische Taschenrechner mit grafischer Oberfläche
      Mitglied der Kavallerie: Nein
      BOINC-Statistiken:

    Registriert seit
    01.12.2006
    Beiträge
    1.174
    Danke Danke gesagt 
    76
    Danke Danke erhalten 
    5
    Genau, diese Ordner bleiben als "Karteileichen" zurück. Ich schaue mir das obere Script mal morgen genauer an, ist nicht so mein Steckenpferd.

  6. Beitrag #6
    Grand Admiral
    Special
    Grand Admiral
    Avatar von Dalai
    • Mein System
      Notebook
      Modell: Thinkpad T43 mit 15" UXGA (1600x1200), 2x 1 GiB RAM, 100GB HD, Bluetooth, GBit LAN, ATi X300
      Desktopsystem
      Prozessor: AMD Athlon X4 880K (Godavari)
      Mainboard: Gigabyte GA-F2A88X-D3HP
      Kühlung: Noctua NH-U9B mit 2x NF-B9 Redux PWM (an NA-YC1)
      Arbeitsspeicher: G.Skill Ares F3-2133C11D-16GAR: 2x 8 GiB DDR3-2133 (3,5 GiB nutzbar mit x86)
      Grafikkarte: Gigabyte GeForce GTX 650 Ti, 1024 MiB, Rev 2.0
      Display: Dell U2410, 24 Zoll, IPS, 16:10
      SSD(s): Samsung 850 Evo 250 GB
      Festplatte(n): WD20EZRZ (WD Blue) 2000GB SATA3, WD20EZRX (WD Green) 2000GB SATA3
      Optische Laufwerke: Pio DVR-212 (DVD-RAM), ASUS E818A6T (DVD-ROM), Pio DVD-106S (Slot-in DVD-ROM)
      Soundkarte: Creative SoundBlaster Audigy 2 ZS PCI
      Gehäuse: Lian Li PC-8NB Midi-Tower
      Netzteil: Enermax EMP400AGT MaxPro 400W
      Betriebssystem(e): Windows 7 Professional x64 und immer mal wieder ein neues Linux :-)
      Browser: Mozilla Firefox mit diversen Erweiterungen
      Sonstiges: 2x 120mm Gehäuselüfter (Front und Rückwand), DVBSky T9580, Sharkoon Frontpanel B (2x USB 3.0)

    Registriert seit
    14.06.2004
    Ort
    Meiningen, Thüringen
    Beiträge
    6.970
    Danke Danke gesagt 
    390
    Danke Danke erhalten 
    47
    Da es mich ebenfalls interessiert hat, wie man sowas bewerkstelligen kann, hab ich heute etwas gebastelt:
    Code:
    Param(
      [Parameter(Mandatory=$true)] [string] $Path,
      [switch] $dryRun
    )
    
    Function SidToUser
    {
        Param(
            [Parameter(Mandatory=$true)] [string] $SID
        )
    
        $objSID = New-Object System.Security.Principal.SecurityIdentifier(${SID})
        try
        {
            $objUser = $objSID.Translate([System.Security.Principal.NTAccount])
            return $objUser.Value
        }
        catch
        {
            return $Null
        }
    }
    
    $Count=0
    
    Write-Host "`r`nReading directory contents of ${Path} ..."
    $FSObjectList = $(Get-ChildItem -Recurse -Path "${Path}" | Get-Acl | Where-Object Owner -Like "O:S-1-5-*")
    
    Write-Host ""
    foreach($f in ${FSObjectList})
    {
        $sid=($f.Owner).SubString(2)
        if (! (SidToUser "${sid}") )
        {
            Write-Host -NoNewline "Deleting object "
            Write-Host -NoNewline -ForegroundColor Cyan "$(${f}.Path.SubString(38)) "
            Write-Host -NoNewline "of user with unknown SID "
            Write-Host -ForegroundColor Cyan "${sid}"
            $Count++
            if (!$dryRun)
            {
                ${f} | Remove-Item
            }
        }
    }
    Write-Host -NoNewline "`r`nDeleted "
    Write-Host -NoNewline -ForegroundColor Cyan "${Count} "
    Write-Host "objects.`r`n"
    Nicht sonderlich schön, zumal Remove-Item fragt, wenn ganze nicht leere Verzeichnisse gelöscht werden sollen. Schnell scheint es auch nicht zu sein. Ist aber kein Wunder, denn PowerShell-Skripte hab ich bisher ziemlich wenige geschrieben, so dass da mit Sicherheit noch Optimierungspotential besteht .

    Du solltest beim Testen unbedingt den Schalter dryRun benutzen! Ich hatte überlegt, ob man das Skript einfach nur die Dateisystemobjekte auflisten lässt, so dass man dessen Ausgabe dann selber in der PowerShell an Remove-Item übergeben kann - kommt eben auf das Einsatzgebiet an (manuell vs. automatisiert per Taskplaner o.ä.).

    Grüße
    Dalai

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •