Top-Themen

Aktuelle Themen (A bis Z)

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

Mitglied: thl1966

thl1966 (Level 1) - Jetzt verbinden

20.11.2013 um 08:42 Uhr, 3538 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 ..
Ähnliche Inhalte
Batch & Shell
TODO List in ( Batch )
gelöst Frage von clragonBatch & Shell4 Kommentare

Hallo Liebe Forum-Nutzer Ich habe heute versucht, mir eine Batch zu schreiben die Notizen anzeigt, aka eine Todo Liste ...

Windows 7
Win7 firewall list von
Frage von AtoAtoWindows 77 Kommentare

hallo in Win7 kann ich mit dem Befehl netsh advfirewall firewall show rule status=enabled name=all zeige alle Rules, die ...

Visual Studio
VisualBasic List of FindRange
Frage von Herbrich19Visual Studio4 Kommentare

Hallo, Ich habe zwei Listen von Typ Byte. Ich muss nun den Range in ListA finden, dieser entspricht den ...

Windows 10
Jump List geändert ohne Erfolg
Frage von ErbsenzaehlerWindows 10

Hallo, bin neu hier - habt Nachsicht und schon mal im Voraus danke für Eure Hilfe. Ich möchte die ...

Neue Wissensbeiträge
Windows 10

"Windows 10 Pro V1903: Gruppenrichtlinie "Telemetrie zulassen" aktivierbar?"

Tipp von Snowbird vor 7 StundenWindows 101 Kommentar

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 3 TagenHyper-V7 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 3 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Heiß diskutierte Inhalte
Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer15 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

LAN, WAN, Wireless
Mikrotik Gast-Wlan keine Verbindung zum Internet?
Frage von dirkschwarzLAN, WAN, Wireless10 Kommentare

Guten Morgen, habe ein wahrscheinlich einfaches Problem, bei dem ich aber nicht wirklich weiter komme Ich möchte ein Gast-Wlan ...

Batch & Shell
Mittels SED Text ersetzen in Anführungszeichen
gelöst Frage von nekronBatch & Shell9 Kommentare

Moin … bin nicht wirklich der SED/regex Mensch, vielleicht kann mir jemand auf die Schnelle Helfen :) ich habe ...