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, 2421 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 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" ...

Microsoft

PowerShell: CSV in CSV kopieren

gelöst Frage von PludanMicrosoft3 Kommentare

Hallo Ich bin an einem PS Skript dran der den Inhalt von CSV 1 in CSV 2 kopiert. Wie ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 18 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 22 StundenCPU, RAM, Mainboards5 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Ubuntu
Ubuntu - Routing mit 2 Netzwerkkarten?
Frage von gabrixlUbuntu13 Kommentare

Hei Folgende Situation: Ich habe zwei virtuelle Maschinen: 1 - Server für DHCP, DNS und Routing - Netzwerkkarte 1: ...