Powershell - UserID-Liste übergeben und Company Objekt aus AD auslesen und Liste dann speichern
Hallo liebe Forenteilnehmer,
stehe vor der Aufgabe ein Laufwer zu konsolidieren.
Im ersten Schritt musste ich die UserID der bestehenden Daten ermitteln.
Diese habe ich jetzt in einer Excel-Liste (Exportiert mit TreeSize Professional V6.01)
Nun gibt es bei vielen UserIDs verschiedene Firmengruppen, die im Company Objekt in der AD gespeichert ist.
Jetzt meine Frage:
Wie kann ich in Powershell die von mir bereits erzeugte Liste mit dem AD abgleichen und dann erneut mit einer zusätzlichen Spalte wieder abspeichern?
Active Directory Modul ist bereits geladen.
Vielen Dank im Voraus.
Thomas
stehe vor der Aufgabe ein Laufwer zu konsolidieren.
Im ersten Schritt musste ich die UserID der bestehenden Daten ermitteln.
Diese habe ich jetzt in einer Excel-Liste (Exportiert mit TreeSize Professional V6.01)
Nun gibt es bei vielen UserIDs verschiedene Firmengruppen, die im Company Objekt in der AD gespeichert ist.
Jetzt meine Frage:
Wie kann ich in Powershell die von mir bereits erzeugte Liste mit dem AD abgleichen und dann erneut mit einer zusätzlichen Spalte wieder abspeichern?
Active Directory Modul ist bereits geladen.
Vielen Dank im Voraus.
Thomas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222479
Url: https://administrator.de/contentid/222479
Ausgedruckt am: 20.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
also höhrt sich für mich so an, als würdest Du gerne die NTFS Rechte aller Ordner und Dateien Dokumentieren.
Da bringt es Dich aber nich weiter, die Ersteller/Besitzer zu Dokumentieren und in einer Datei festzuhalten. Der Companyname sollte ja gleich sein oder gibt es Domänen mit Vertrauensstellungen?
Wenn Du den Besitzer namen schon hast, kannst Du auch das AD anhand dieses Namens nach dem Rest fragen.
Mit Scripten kann man auch mit reinen Bordmitteln alle Ordner/Dateien auslesen und die ACL abfragen (bzw evtl brauchst Du Tools aus den Sysinternals).
Die Liste wer ist Besitzer welcher Date sagt Dir über die Zugriffe vom Rest des AD noch nix.
Es gibt auch Kostenpflichtige Tools dafür die einfacher zu handhaben sind.
Die Frage ist nur was ist der Zweck des ganzen. Eine Liste wem welche Datei gehöhrt bringt Dir nicht wirklich was, da andere gf trozdem Zugriff haben oder sogar löschen dürfen.
Wenn die Daten strucktoriert werden sollen.
1: Was sind das für Daten
2: Anforderungen für Zugriffe (dazu gehöhrt auch wer soll welche Daten einsehen können)
3: Strucktur anhand der Anforderungen erstellen
4: Anlegen von Gruppen für die Zugriffe (Nur Gruppen bekommen Zugriffe auf Daten)
5: Kopieren der Daten in die neue Strucktur
6: Setzen der neuen Berächtigungen vererben erzwingen ggf. vorher alles in Adminbesitz und dann Rechtevergabe.
Und dann kannst Du auch die ersten Ebenen die Gruppenmitgleidschaften notieren bis zu den Punkten wo die Vererbung geht bzw. ab wo sie neu beginnt.
Alles andere ist ein Wust den man zwar Dokumentiren kann aber keiner durchblickt.
Gruß
Chonta
also höhrt sich für mich so an, als würdest Du gerne die NTFS Rechte aller Ordner und Dateien Dokumentieren.
Da bringt es Dich aber nich weiter, die Ersteller/Besitzer zu Dokumentieren und in einer Datei festzuhalten. Der Companyname sollte ja gleich sein oder gibt es Domänen mit Vertrauensstellungen?
Wenn Du den Besitzer namen schon hast, kannst Du auch das AD anhand dieses Namens nach dem Rest fragen.
Mit Scripten kann man auch mit reinen Bordmitteln alle Ordner/Dateien auslesen und die ACL abfragen (bzw evtl brauchst Du Tools aus den Sysinternals).
Die Liste wer ist Besitzer welcher Date sagt Dir über die Zugriffe vom Rest des AD noch nix.
Es gibt auch Kostenpflichtige Tools dafür die einfacher zu handhaben sind.
Die Frage ist nur was ist der Zweck des ganzen. Eine Liste wem welche Datei gehöhrt bringt Dir nicht wirklich was, da andere gf trozdem Zugriff haben oder sogar löschen dürfen.
Wenn die Daten strucktoriert werden sollen.
1: Was sind das für Daten
2: Anforderungen für Zugriffe (dazu gehöhrt auch wer soll welche Daten einsehen können)
3: Strucktur anhand der Anforderungen erstellen
4: Anlegen von Gruppen für die Zugriffe (Nur Gruppen bekommen Zugriffe auf Daten)
5: Kopieren der Daten in die neue Strucktur
6: Setzen der neuen Berächtigungen vererben erzwingen ggf. vorher alles in Adminbesitz und dann Rechtevergabe.
Und dann kannst Du auch die ersten Ebenen die Gruppenmitgleidschaften notieren bis zu den Punkten wo die Vererbung geht bzw. ab wo sie neu beginnt.
Alles andere ist ein Wust den man zwar Dokumentiren kann aber keiner durchblickt.
Gruß
Chonta
Hallo Thomas,
sollte mal in Powershell skizziert etwa so aussehen (bei einfachen Tests erfolgreich, aber nicht ausführlich getestet. Siehe wichtige Hinweise unter dem Script)
Startordner in Zeile 1 und Pfad zur Ausgabe-CSV-Datei in Zeile 2 angeben.
Wichtiger Hinweis: Ich muss beim Auslesen der Dateisystem-Struktur darauf hinweisen, dass wenn ein Pfad länger als 248 Zeichen ist, dieser nicht ausgelesen werden kann (Ist leider ein blöder Bug in .NET und der Powershell) und es zu Fehlern kommt. Dies ist Sicherzustellen. Außerdem sollte das Script von einem Admin-Account ausgeführt werden welcher auf alle Dateien der Freigabe Zugriff hat.
Grüße Uwe
sollte mal in Powershell skizziert etwa so aussehen (bei einfachen Tests erfolgreich, aber nicht ausführlich getestet. Siehe wichtige Hinweise unter dem Script)
Startordner in Zeile 1 und Pfad zur Ausgabe-CSV-Datei in Zeile 2 angeben.
$startFolder = "\\Server\Freigabe"
$csvFile = "C:\Users\Administrator\Desktop\exported_data.csv"
Import-Module ActiveDirectory
$arrTable = @()
$files = Get-ChildItem $startFolder -recurse | ? {$_.PSIsContainer -eq $False}
foreach ($f in $files){
$owner = $f.GetAccessControl().Owner.toString()
$userName = $owner.Split("\")[1]
Try {
$adProps = Get-ADUser $username -Properties DisplayName,Company,Department -ErrorAction SilentlyContinue
} Catch {$adProps = $null}
if ($adProps){
$displayname = $adProps.Displayname
$company = $adProps.Company
$department = $adProps.Department
}else{
$displayname = ""
$company = ""
$department = ""
}
$arrTable += New-Object PSObject -Property @{"Dateiname"=$f.Name;"Pfad"=$f.DirectoryName;"Größe(MB)"=[Math]::Round
($f.Length/(1024 * 1024),3);"Letzte Änderung"=$f.LastWriteTime;"Letzter Zugriff"=$f.LastAccessTime;"Besitzer"=
$owner;"DisplayName"=$displayname;"Firma"=$company;"Abteilung"=$department}
}
$arrTable | sort -Property Besitzer | select "Dateiname","Pfad","Größe(MB)","Letzte Änderung","Letzter
ugriff","Besitzer","DisplayName","Firma","Abteilung" | export-csv $csvFile -Delimiter ";" -NoTypeInformation -Encoding UTF8
Grüße Uwe