Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Powershell - UserID-Liste übergeben und Company Objekt aus AD auslesen und Liste dann speichern

Frage Entwicklung Batch & Shell

Mitglied: thl1966

thl1966 (Level 1) - Jetzt verbinden

20.11.2013 um 08:42 Uhr, 2829 Aufrufe, 5 Kommentare

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
Mitglied: Chonta
20.11.2013 um 09:20 Uhr
Hallo,

was genau ist denn Dein Ziel?
Und was genau ist gegeben?

Gruß

Chonta
Bitte warten ..
Mitglied: thl1966
20.11.2013 um 13:15 Uhr
Hallo Chonta,

mein Ziel ist es am Ende eine Liste zu haben mit allen Namen (UserID) und Organisationsname für entsprechende Ordner, die ich über TreeSize exportiert hatte.

Beispiel Export:

NamederDatei.Ext, Pfad, Größe, Letzte Änderung, Letzter Zugriff, Dateityp, Besitzer

Dann habe ich erst mal eine Excel-Tabelle mit allen Daten die älter sind als 31.12.2012 und egal wie alt.
In dieser Liste stehen natürlich in der letzten Spalte der Besitzer der Datei.
Dies kann auch öfters vorkommen (evtl. kann man eine Grppierung durchführen)

Jetzt will ich folgendes mit der Powershell realisieren:

Anhand der Besitzer in dieser Excel-Tabelle den Displaynamen, Companyname und Abteilung aus der AD auslesen und in der gleichen oder neuen Excel-Tabelle schreiben lassen.

Nachdem ich so eine Liste habe, kann ich diese per Mail informieren über die bestehende Datenkonsolidierung.

Evtl. kann man das ganze sogar komplett in Powershell realisieren ohne TreeSize zu benutzen.
Hierzu müsste man ein bestimmtes Netzlaufwerk scannen und alle Daten, die älter sind als 31.12.2013 und egal wie alt mit
Dateiname, Pfad etc (wie oben beschrieben) exportieren mit den entsprechenden Infos aus der AD.

Gruß

Thomas
Bitte warten ..
Mitglied: Chonta
20.11.2013 um 14:26 Uhr
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
Bitte warten ..
Mitglied: thl1966
20.11.2013 um 15:20 Uhr
Hallo Chonta,

es gibt mehrere Domänen mit Vertrauensstellungen.
Die Liste bekommt am Ende die Anwender zu sehen, um zu wissen, welche Daten sie verschieben bzw. löschen müssen.
Hintergrund ist der, dass dieses Laufwerk im Sommer schon von einer bestimmten Domäne entfernt worden ist.
Die Rechte sind im Moment auf "Everyone" gesetzt. Dies soll geändert werden. Bestimmte Ordner, die mit vielen Anwendern gemeinsam verwendet werden müssen eine Globale Gruppe beantragen und dies wird dann nach dem A-G-DL-P Prinzip auf den jeweiligen Ordner berechtigt. Alle anderen Ordner werden nach ca. vier Wochen gelöscht, wenn die Anwender Ihre Daten nicht sichern-/verschieben oder löschen.

Damit ich und auch der Anwender weiß, welche Daten ihm zugeordnet sind mache ich eine Datenanlayse via TreeSize Professional V6.01. Funktioniert perfekt, bis auf den Punkt, dass ich in der Liste noch einige AD-Merkmale benötige, die ich halt gerne ergänzen möchte. Ob dies mit Powershell oder anderen Programm realisiert wird, ist mir egal. Wichtig ist das Ergebnis.

Perfekt wäre jeden Ordner auszulesen und dann eine Excel-Datei zu erstellen mit den entsprechenden Werten aus der AD und den Pfaden. Da hier nur bestimmte Userkreise aus bestimmten Abteilungen anzusprechen sind, aber nicht alle, ist dies für mich wichtig. So kann ich dann jede Excel.-Datei hernehmen und mir die Anwender raussuchen und diese per Mail informieren, was ich machen muss. Im Moment mache ich das manuell, da dies sehr mühsam ist. Es handelt sich um ca. 9 Mill. Dateien.

Vieleicht gibt es noch den einen oder anderen Tipp, der mir bei meinem Problem weiterhilft, ansonsten muss ich vieles zu "Fuß" erledigen.

Gruß
Thomas
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 21:04 Uhr
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.
01.
$startFolder = "\\Server\Freigabe" 
02.
$csvFile = "C:\Users\Administrator\Desktop\exported_data.csv" 
03.
 
04.
Import-Module ActiveDirectory 
05.
$arrTable = @() 
06.
$files = Get-ChildItem $startFolder -recurse | ? {$_.PSIsContainer -eq $False} 
07.
foreach ($f in $files){ 
08.
	$owner = $f.GetAccessControl().Owner.toString() 
09.
	$userName = $owner.Split("\")[1] 
10.
	Try { 
11.
		$adProps = Get-ADUser $username -Properties DisplayName,Company,Department -ErrorAction SilentlyContinue 
12.
	} Catch {$adProps = $null} 
13.
	if ($adProps){ 
14.
		$displayname = $adProps.Displayname 
15.
		$company = $adProps.Company 
16.
		$department = $adProps.Department 
17.
	}else{ 
18.
		$displayname = "" 
19.
		$company = "" 
20.
		$department = "" 
21.
22.
	$arrTable += New-Object PSObject -Property @{"Dateiname"=$f.Name;"Pfad"=$f.DirectoryName;"Größe(MB)"=[Math]::Round 
23.
($f.Length/(1024 * 1024),3);"Letzte Änderung"=$f.LastWriteTime;"Letzter Zugriff"=$f.LastAccessTime;"Besitzer"= 
24.
$owner;"DisplayName"=$displayname;"Firma"=$company;"Abteilung"=$department}        
25.
26.
 
27.
$arrTable | sort -Property Besitzer | select "Dateiname","Pfad","Größe(MB)","Letzte Änderung","Letzter  
28.
ugriff","Besitzer","DisplayName","Firma","Abteilung" | export-csv $csvFile -Delimiter ";" -NoTypeInformation -Encoding UTF8
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Informationen über AD-User auslesen (4)

Frage von Tungdal zum Thema Batch & Shell ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...