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

gelöst Erstellen von Verzeichnissen, Gruppen und Berechtigungen über Powershell und CSV-Datei

Mitglied: kilrathi

kilrathi (Level 1) - Jetzt verbinden

09.01.2015 um 11:51 Uhr, 2541 Aufrufe, 5 Kommentare, 2 Danke

Hallo Leute,

ich habe eine Frage und hoffe Ihr könnt mir dabei schnell und einfach helfen:
In meinem ersten Projekt für meinen neuen Arbeitgeber habe ich eine für mich doch etwas zu knifflige Aufgabe erhalten.

Es geht dabei um ne Fileservermigration und einen Neuaufbau der Ordnerstruktur.
Dabei wird eine Excel Datei zur Verfügung gestellt die folgendermaßen aufgebaut ist.

Spalte 1 ; Spalte 2 ; Spalte 3
Standort ; Ordner ; Unterordner

Bsp: Berlin ; Dokumentation ; Installationsanleitungen

Aus dieser Excel Datei wird dann ne CSV-Datei erstellt, die für den weiteren Verlauf verwendet werden soll.
Im ersten Schritt sollen die entsprechenden Ordner und Unterordner erstellt werden über ein Script
Im zweiten Schritt sollen für jede Ebene Gruppen erstellt werden. Diese Gruppen haben allerdings unterschiedliche Name und Berechtigungen

Bsp:
Ebene 1: "Standort"_"Fileserver"_"R" (Read)
Ebene 2: "Standort"_"Fileserver"_"Ordner"_"R" und "Standort"_"Fileserver"_"Ordner"_"M" (Manage)
Ebene 3: "Standort"_"Fileserver"_"Ordner"_"Unterordner"_"R" und "Standort"_"Fileserver"_"Ordner"_"Unterordner"_"C" (Change)

Die Ebene 3 Gruppen werden Mitglied der entsprechenden Ebene 2 Read Gruppe (Rückwärts Verschachtelung).
Die Ebene 2 Gruppe (M) soll in den Ebene 3 Gruppen ein Managementrecht bekommen.
Ansonsten sollen die Gruppen nur auf ihrer Ebene die jeweiligen Berechtigungen erhalten.

Die Verzeichnisse und Gruppen konnte ich bereits über 2 getrennte Skripte erstellen lassen. Ich glaube das wäre aber auch in nur einem Skript möglich (soll es auch sein)
Nur mit dem erstellen und vergeben von Berechtigungen habe ich so meine Probleme.


Vielleicht könnt Ihr mir ja helfen. Ich soll am Mittwoch Ergebnisse vorlegen können....

Danke im Voraus
Viele Grüße
Kilrathi
Mitglied: colinardo
09.01.2015, aktualisiert um 12:10 Uhr
Hallo Kilrathi, WIllkommen auf Administrator.de!
Guckst du hier für das Vergeben von Berechtigungen:

Für die Unterbrechung der Vererbung siehe:
Unterbrechen der Vererbung mit SetAcessRuleProtection

Grüße Uwe
Bitte warten ..
Mitglied: kilrathi
09.01.2015 um 13:46 Uhr
Hallo Uwe,

vielen Dank für die schnelle Antwort.
Ich glaube mein Hauptproblem (neben meiner geringen Kenntnisse im Umgang mit Powershell) ist die Tatsache, dass im Script alles automatisiert ablaufen soll für mehrere hundert Ordner und Gruppen.

So muss ja z.B. für das Verzeichnis: Berlin - Dokumentation - Installation einerseits die Gruppe Berlin_FS_R erstellt werden, die dann nur im Verzeichnis Berlin auftaucht. Die Gruppen Berlin_FS_Doku_R und Berlin_FS_Doku_M, die dann nur im Verzeichnis Doku auftauchen usw.

Ist mein geplantes Vorgehen überhaupt realisierbar? Also kann man mit Hilfe der CSV Datei bzw. mit Hilfe der erstellten Gruppen / Verzeichnisse diese diversen Abfragen und Abläufe starten? Ich stell mir das gerade alleine für eine Ebene schon ziemlich verzwickt vor. Bei 2 oder 3 Ebenen steigt mein Hirn aber dann komplett aus.

Ich poste jetzt anbei mal mein Script zum erstellen der Gruppen. (In welchem übrigens diverse Fehler angezeigt werden, dass die Gruppen schon existieren, aber dennoch alles so funktioniert wie ich mir das vorstelle:

$fs = "FILESERVER"

$ordner = Import-Csv \\$fs\c$\users\administrator\desktop\Level1-3.csv

foreach ($i in $ordner){
New-ADGroup -name ($i.Level1 + "_" + $fs + "_R") -DisplayName ($i.Level1 + "_" + $fs + "_R") -GroupCategory Security -GroupScope Global -Path "OU=Level 1,OU=Gruppen (Test), DC=def,DC=local" -EA 0
}
foreach ($j in $ordner){
New-ADGroup -name ($j.Level1 + "_" + $fs + "_" + $j.Level2 + "_R") -DisplayName ($j.Level1 + "_" + $fs + "_" + $j.Level2 + "_R") -GroupCategory Security -GroupScope Global -Path "OU=Level 2,OU=Gruppen (Test), DC=def,DC=local" -EA 0
New-ADGroup -name ($j.Level1 + "_" + $fs + "_" + $j.Level2 + "_M") -DisplayName ($j.Level1 + "_" + $fs + "_" + $j.Level2 + "_M") -GroupCategory Security -GroupScope Global -Path "OU=Level 2,OU=Gruppen (Test), DC=def,DC=local" -EA 0
}
foreach ($k in $ordner){
New-ADGroup -name ($k.Level1 + "_" + $fs + "_" + $k.Level2 + "_" + $k.Level3 + "_R") -DisplayName ($k.Level1 + "_" + $fs + "_" + $k.Level2 + "_" + $k.Level3 + "_R") -GroupCategory Security -GroupScope Global -Path "OU=Level 3,OU=Gruppen (Test), DC=def,DC=local" -EA 0
New-ADGroup -name ($k.Level1 + "_" + $fs + "_" + $k.Level2 + "_" + $k.Level3 + "_C") -DisplayName ($k.Level1 + "_" + $fs + "_" + $k.Level2 + "_" + $k.Level3 + "_C") -GroupCategory Security -GroupScope Global -Path "OU=Level 3,OU=Gruppen (Test), DC=def,DC=local" -EA 0
}

Sieht auch etwas chaotisch und unübersichtlich aus, aber es erfüllt soweit den Zweck.

VG Kilrathi
Bitte warten ..
Mitglied: colinardo
09.01.2015, aktualisiert um 14:37 Uhr
neben meiner geringen Kenntnisse im Umgang mit Powershell) ist die Tatsache, dass im Script alles automatisiert ablaufen soll für mehrere hundert Ordner und Gruppen.
Schön und gut und alles machbar, aber bist du dir sicher das das Projekt etwas für dich ist?
Ich möchte natürlich nicht das wenn das hier eine Bewährungsprobe in deinem Job sein soll das deinem Arbeitgeber falsche Tatsachen vorgetäuscht werden.
Wenn Powershell nicht dein Steckenpferd ist, würde ich das erst mal dem Arbeitgeber gegenüber erwähnen und um mehr Einarbeitungszeit, oder eine Schulung bitten.

Die mehrfachen Schleifen über alle Ordner ist schon mal eine suboptimale Herangehensweise.
Du musst die Schritte am besten Zeile für Zeile abarbeiten inkl. Ordnererstellung, Anlage der Gruppen und Vergabe der Berechtigungen. Also alles in einer großen Schleife über die Zeilen der CSV machbar.

Mache dir evt. am Wochenende mal eine grobe Skizze, wie sowas aussieht.
Bitte warten ..
Mitglied: kilrathi
12.01.2015 um 10:49 Uhr
Danke, dass du dir da Gedanken machst. Kann dich da aber beruhigen.
Ich werde nicht auf Dauer im Bereich der Powershell eingesetzt werden, aber hier und da müssen eben Scripte etc. geschrieben werden.
Deshalb bekommen wir (Arbeitskollegen und ich) auch demnächst die ein oder andere Schulung im Bereich Powershell.
Aktuell geht es einfach darum das "Problem" zu lösen.

Ich dachte mir schon, dass die aktuelle Variante eher suboptimal ist. Aber auch deswegen hab ich mich an dich / euch gewandt in der Hoffnung auf Hilfe und Unterstützung. Ich versuch mich auch im Laufe des Tages an der Verbesserung der Scripte und bin gespannt, wie dein Lösungsvorschlag aussieht.

Viele Grüße und danke nochmal.
Bitte warten ..
Mitglied: kilrathi
13.01.2015, aktualisiert um 09:37 Uhr
Hab das Script mal angepasst. Ich denke zwar das sich bei euch immer noch die Nackenhaare hochstellen werden, aber was solls

#Basis Variablen
$fs = "DEF-SVR1"
$ou1 = "OU=Level 1,OU=Gruppen (Test)"
$ou2 = "OU=Level 2,OU=Gruppen (Test)"
$ou3 = "OU=Level 3,OU=Gruppen (Test)"
$dc = "DC=def, DC=local"
$ordner = Import-Csv \\$fs\c$\users\administrator\desktop\Level1-3.csv

foreach ($i in $ordner){
#Spezifische Variablen
$lvl1 = ($i.Level1 + "_" + $fs + "_R")
$lvl2a = ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_R")
$lvl2b = ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_M")
$lvl3a = ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_" + $i.Level3 + "_R")
$lvl3b = ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_" + $i.Level3 + "_C")

#Verzeichnisse erstellen
New-Item -type directory -path ("\\" + $fs + "\d$\" + $i.Level1 + "\" + $i.Level2 + "\" + $i.Level3) -EA 0

#AD Gruppen erstellen
if ((Get-ADGroup -Filter {Name -eq $lvl1}) -eq $null) {
New-ADGroup -name ($i.Level1 + "_" + $fs + "_R") -GroupCategory Security -GroupScope Global -Path "$ou1, $dc" }

if (((Get-ADGroup -Filter {Name -eq $lvl2a}) -eq $null) -and ((Get-ADGroup -Filter {Name -eq $lvl2b})) -eq $null) {
New-ADGroup -name ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_R") -GroupCategory Security -GroupScope Global -Path "$ou2, $dc"
New-ADGroup -name ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_M") -GroupCategory Security -GroupScope Global -Path "$ou2, $dc" }

if (((Get-ADGroup -Filter {Name -eq $lvl3a}) -eq $null) -and ((Get-ADGroup -Filter {Name -eq $lvl3b})) -eq $null) {
New-ADGroup -name ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_" + $i.Level3 + "_R") -GroupCategory Security -GroupScope Global -Path "$ou3, $dc"
New-ADGroup -name ($i.Level1 + "_" + $fs + "_" + $i.Level2 + "_" + $i.Level3 + "_C") -GroupCategory Security -GroupScope Global -Path "$ou3, $dc" }
}

Hab jetzt Abfragen drin, die überprüfen ob die jeweilige Gruppe vorhanden ist und wenn nicht, dann wird sie erstellt.

Als Nächstes muss ich heute irgendwie noch das Thema Berechtigungen in den Griff bekommen. Wäre schön, wenn ihr mir da helfen könntet. Danke..

VIele Grüße
Michael
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Powershell - CSV - kleinster Wert einer Gruppe

gelöst Frage von KraemerBatch & Shell4 Kommentare

Moin zusammen, ich habe da eine Problemstellung, die ich normalerweise simpel mit einer Schleife lösen würde. Da ich in ...

Batch & Shell

PowerShell UserFolder mit Unterordner und Berechtigungen (csv)

gelöst Frage von lupoloBatch & Shell2 Kommentare

Hallo erstmal, ich bin Anfänger im Bereich Powershell und bräuchte Hilfe für ein Powershell Script. Ich will für unserern ...

Batch & Shell

Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen

Frage von windelterroristBatch & Shell1 Kommentar

Hallo Admins :) Mein Skript soll mehrere AD User aus einer CSV Datei per PowerShell erstellen. Soweit funktioniert das ...

Windows Userverwaltung

Berechtigungen Verzeichnisse

Frage von uridium69Windows Userverwaltung1 Kommentar

Tag zusammen Ich bin dabei unsere Berechtigungen zu überarbeiten, wir haben an die 40 Verzeichnisse die auf dem "Root" ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing20 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware11 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...

Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement10 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...