Speichernutzung eines Windows Domänenbenutzers analysieren
Hallo zusammen,
folgendes Szenario: Linux fileserver auf Basis Samba4 mit aktivierter Kontigentbeschränkung (quota) auf filesystems /srv/freigaben. In Samba4 gibt es diverse Freigaben, physikalisch liegt alles unterhalb dieses filesystem, also z.B.
Freigabe --> Ort auf dem Linux filesystem
Foo --> /srv/freigaben/foo
Bar --> /srv/freigaben/bar
Homes --> /srv/freigaben/homes
Public --> /srv/freigaben/public
Marketing --> /srv/freigaben/marketing
usw.
Quotas sind eingerichtet und funktionieren auch soweit. Das Problem bzw. meine Frage ist: welche Möglichkeit hat ein standard Windows-Domänenbenutzer (=Mitarbeiter) herauszufinden, wo überall er Dateien auf diesem Server liegen hat. Alle Dateien, dessen Besitzer/Eigentümer ist werden ja zu seinem Quota dazugerechnet. Manuell und mit etwas Eigenrecherche kann ich auf dem Linux fileserver manuell alle Dateien des Benutzer "mustermann" rausfischen mit "find" und "awk" in einem one-liner aber das Ziel soll es sein, dass der Mitarbeiter das selbst anzeigen lassen kann. Er hat mehrere Ordner und Dateien quer durch alle verfügbaren Freigaben verteilt, möchte Platz schaffen (alte Daten aufräumen, komprimieren, löschen, ...) und weiß aber nicht wie er all "seine" Dateien findet.
Hat jemand einen Tip?
folgendes Szenario: Linux fileserver auf Basis Samba4 mit aktivierter Kontigentbeschränkung (quota) auf filesystems /srv/freigaben. In Samba4 gibt es diverse Freigaben, physikalisch liegt alles unterhalb dieses filesystem, also z.B.
Freigabe --> Ort auf dem Linux filesystem
Foo --> /srv/freigaben/foo
Bar --> /srv/freigaben/bar
Homes --> /srv/freigaben/homes
Public --> /srv/freigaben/public
Marketing --> /srv/freigaben/marketing
usw.
Quotas sind eingerichtet und funktionieren auch soweit. Das Problem bzw. meine Frage ist: welche Möglichkeit hat ein standard Windows-Domänenbenutzer (=Mitarbeiter) herauszufinden, wo überall er Dateien auf diesem Server liegen hat. Alle Dateien, dessen Besitzer/Eigentümer ist werden ja zu seinem Quota dazugerechnet. Manuell und mit etwas Eigenrecherche kann ich auf dem Linux fileserver manuell alle Dateien des Benutzer "mustermann" rausfischen mit "find" und "awk" in einem one-liner aber das Ziel soll es sein, dass der Mitarbeiter das selbst anzeigen lassen kann. Er hat mehrere Ordner und Dateien quer durch alle verfügbaren Freigaben verteilt, möchte Platz schaffen (alte Daten aufräumen, komprimieren, löschen, ...) und weiß aber nicht wie er all "seine" Dateien findet.
Hat jemand einen Tip?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 521234
Url: https://administrator.de/contentid/521234
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
9 Kommentare
Neuester Kommentar
Powershell Einzeiler am Client, ansonsten kannst du ja auch ne PHP-Seite basteln die es dem User auf ner Webseite präsentiert.
Get-ChildItem "\\SERVER\Share" -Recurse -File -Force -EA SilentlyContinue | ?{$_.GetAccessControl().GetOwner([System.Security.Principal.NTAccount]).Value -eq "$env:USERDOMAIN\$env:USERNAME"} | sort Length -Desc | select @{n='Größe(MB)';e={"{0:F2}" -f ($_.Length / 1MB)}},LastWriteTime,Fullname | ogv
Klar einfach ne Schleife über Win32_Share drum pappen
gwmi Win32_Share -Computer xyz
Dann ist wohl die Firewall des Servers komplett dicht, und die WMI Ausnahme ist nicht gegeben.
Geht hier einwandfrei
$server = 'SERVERXY'
gwmi win32_Share -Computer $server | ?{$_.Type -eq 0 -and $_.Name -notmatch '\$$'} | %{
Get-ChildItem "\\$server\$($_.Name)" -Recurse -File -Force -EA SilentlyContinue | ?{$_.GetAccessControl().GetOwner([System.Security.Principal.NTAccount]).Value -eq "$env:USERDOMAIN\$env:USERNAME"} | sort Length -Desc | select @{n='Größe(MB)';e={"{0:F2}" -f ($_.Length / 1MB)}},LastWriteTime,Fullname
} | ogv
Uups ist ja ein Samba-Server der hat ja kein WMI da geht das natürlich nicht. Dann musst du die Shares auf andere Art auslesen (z.B. über "net view") oder im Skript definieren.
$server = 'SERVERXYZ'
net view $server | ?{$_ -match 'Platte'} | %{($_ -split '\s+')} | %{
Get-ChildItem "\\$server\$_" -Recurse -File -Force -EA SilentlyContinue | ?{$_.GetAccessControl().GetOwner([System.Security.Principal.NTAccount]).Value -eq "$env:USERDOMAIN\$env:USERNAME"} | sort Length -Desc | select @{n='Größe(MB)';e={"{0:F2}" -f ($_.Length / 1MB)}},LastWriteTime,Fullname
} | ogv
Ja, beschäftige dich mal mit try .... Catch