Ordner mit AD Abfrage erstellen und Berechtigungen setzen
Guten Morgen zusammen,
wie man sich denken kann, habe ich ein Problem und komme damit nicht wirklich weiter.
Ich bin in Sachen Powershell wirklich ein absoluter Neuling.
Ich möchte aus unserem AD bestimmte Gruppen Auslesen und gleich dazu die passenden Ordner erstellen und diese mit den richtigen Berechtigungen versehen.
Die Struktur ist nicht allzu tief.
Soll im Prinzip so ausshen:
Ebene 1: Laufwerksgruppe
Ebene 2: Mitarbeitergruppe1, Mitarbeitergruppe2
Bei meinen bisherigen Basteleien ist nicht wirklich was vernünftiges rausgekommen....Ich möchte auch den Weg umgehen erst einen Export in z.B. eine csv zu machen, nur um diese wieder zu importieren.....
Dankeschön schon einmal im voraus.
Gruß
wie man sich denken kann, habe ich ein Problem und komme damit nicht wirklich weiter.
Ich bin in Sachen Powershell wirklich ein absoluter Neuling.
Ich möchte aus unserem AD bestimmte Gruppen Auslesen und gleich dazu die passenden Ordner erstellen und diese mit den richtigen Berechtigungen versehen.
Die Struktur ist nicht allzu tief.
Soll im Prinzip so ausshen:
Ebene 1: Laufwerksgruppe
Ebene 2: Mitarbeitergruppe1, Mitarbeitergruppe2
Bei meinen bisherigen Basteleien ist nicht wirklich was vernünftiges rausgekommen....Ich möchte auch den Weg umgehen erst einen Export in z.B. eine csv zu machen, nur um diese wieder zu importieren.....
Dankeschön schon einmal im voraus.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7845769307
Url: https://administrator.de/contentid/7845769307
Ausgedruckt am: 23.11.2024 um 15:11 Uhr
28 Kommentare
Neuester Kommentar
Hi.
Lösung deines Problems: sich mit PowerShell auseinander setzen, üben und lernen. Hilft Dir als Admin ungemein in der Zukunft. (Frag doch mal ChatGPT?)
Es bringt nichts, wenn Dir hier wer den Code vorlegt, den Du stumpf ausführst und noch nicht mal genau kapierst, was da passiert.
Nicht entmutigen lassen -> weitermachen.
Gruß
Mein Problem ist ganz einfach, ich weiß nicht wie ich es machen soll face-smile
Immerhin hast Du das Problem erkannt.Lösung deines Problems: sich mit PowerShell auseinander setzen, üben und lernen. Hilft Dir als Admin ungemein in der Zukunft. (Frag doch mal ChatGPT?)
Es bringt nichts, wenn Dir hier wer den Code vorlegt, den Du stumpf ausführst und noch nicht mal genau kapierst, was da passiert.
Nicht entmutigen lassen -> weitermachen.
Gruß
Moin,
im simpelsten Fall
Verzeichnisse erstellen
und dann noch ACLs setzten wie hier beschrieben: https://stackoverflow.com/questions/25779423/powershell-to-set-folder-pe ...
Ohne Gewähr, testen auf eigene Gefahr
lg,
Slainte
im simpelsten Fall
Verzeichnisse erstellen
get-adgroup -filter "name -like 'a*'" | %{
$dir=New-Item -ItemType Directory -Path ("C:\Path\{0}" -f $_.name)
}
und dann noch ACLs setzten wie hier beschrieben: https://stackoverflow.com/questions/25779423/powershell-to-set-folder-pe ...
Ohne Gewähr, testen auf eigene Gefahr
lg,
Slainte
Da geb ich dir zu 1000% recht!
Wem? Scheinbar hast Du auch keine Zeit für das Forum. aber
Ja, diese abers...Das Stundenkonto platz
Wenn Du einmal PowerShell beherrschst, geht ja alles viel schneller und einfacher.Chef frägt warum das so ist
Schon einmal ein "Frägezeichen" gesehen? :DHalte Dich Kollege @em-pie's Beitrag, dann wird das alles gut.
Gruß
Frage kommt hier x mal im Monat
Z.B. hier
Kann man per Powershell Benutzer-Ordner aus vorhandenen AD Konten erzeugen?
Zeppel
Z.B. hier
Kann man per Powershell Benutzer-Ordner aus vorhandenen AD Konten erzeugen?
Zeppel
Ich habe jetzt ein wenig rumgespielt.
Das machst Du aber vorbildlich in einer Testumgebung, richtig?Falls nicht:
Du arbeitest am offenen Herz. Zerschießt Du damit dein AD, .. wird dein Chef noch stinkiger.
Schieß nicht einfach irgendwelche Scripte über den AD.. Das wirst Du bereuen, eines Tages.
..nur gut gemeint.
Gruß
ich brauche nicht den vollständigen SamAccountName
sondern nur den letzten Teil!
sondern nur den letzten Teil!
....... | %{$_.SamAccountName.split("_")[-1]}
Leute, es ist Freitag, da kann man nicht viel erwarten
So kompliziert muss es nicht sein. Du kannst auch folgenden Befehl nutzen:
Get-ADGroup -Identity "Der name der AD-Grupper"
Daraus bekommst du ein so genanntes Object. Powershell gibt alles als Object zurück. In diesem Fall schaut das in etwa so aus:
Problem jetzt, ich brauche nicht den vollständigen SamAccountName
sondern nur den letzten Teil!
Der letzte Teil ist was genau? Kannst du uns ein Beispiel posten?sondern nur den letzten Teil!
EDIT:
Ach! Jetzt habe ich verstanden was du willst. Mach es doch so:
Get-ADGroup -Filter "*" | select SamAccountName
#oder so
Get-ADGroup -Filter 'SamAccountname -eq "Deine AD-Gruppe"'
Und weil du bei dieser Variante auch den Header bekommst und deser auch in dern $groups-Variable gespeichert wird umgehst du das Problem gleich an der Wurzel wie folgt:
(Get-ADGroup -Filter "*" | select SamAccountName).SamAccountName
#So bekommst du alle Properties die mit sam beginnen, gibst aber nur SamAccountName aus
(Get-ADGroup -Filter "*" | select Sam*).SamAccountName
#So bekommst du wirklich alle Properties:
Get-ADGroup -Filter 'SamAccountname -eq "Deine AD-Gruppe"' -Properties *
$groups = Get-ADGroup -Filter 'SamAccountname -like "*"' -Properties *
Jetzt wollte ich die korrekten Berechtigungen mit den jeweiligen AD Gruppen auf die Ordner setzen!
Lies meinen Link oben, da steht wie man es gleich richtig mit Set-ACL und einer FileSystemAccessRule macht. icacls in Powershell is ehrlich gesagt bäh hoch drei dann brauch ich ja kein Powershell ...Kann man per Powershell Benutzer-Ordner aus vorhandenen AD Konten erzeugen?
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($groups.SamAccountName, "Read","ContainerInherit,ObjectInherit","None","Allow")
fehlt ja die Hälfte, schau dir die Parameter der FilesystemAccessRule noch mal genau an, genau das sagt übrigens die Fehlermeldung schon, dir fehlen die Parameter unter anderem auch für AccessControlType welcher aussagt ob mit der Regel Erlaubt oder Verboten werden soll(Allow/Deny) ...und die folgende Argumenteanzahl kann keine Überladung gefunden werden: "2"
Du kannst nicht einfach Parameter des Konstruktors weglassen nur weil du meinst du brauchst sie nicht oder sie nicht verstehst .Zitat von @mcNewbie:
Ich hab die Sachen weggelassen, da ich sie ganz einfach nicht brauch(falls wir vom gleichen reden).
Doch du brauchst sie, du darfst sie nicht weglassen, und genau das sagt dir die Fehlermeldung .... Die möglichen Konstruktoren sind fest definiert RTFM !!Ich hab die Sachen weggelassen, da ich sie ganz einfach nicht brauch(falls wir vom gleichen reden).
Der kleinste Konstruktor beinhaltet zumindest noch den AccessControlType, also "Allow", oder "Deny"!
https://learn.microsoft.com/de-de/dotnet/api/system.security.accesscontr ...
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($groups.SamAccountName, "Read","Allow")
Ist ja auch klar warum denn $folder.SamAccountName gibt es nicht, das hast du vorher nur zum Ordnernamen expandiert und deswegen keine Property der Variablen mehr .
$filePath = "C:\install\P"
$groups = Get-adgroup -Filter "Name -like 'abcde_lw_*'"
foreach ($group in $groups){
$foldername = $group.SamAccountName.split("_")[-1]
$folderpath = Join-Path $filepath $foldername
if (!(Test-Path $folderpath)){
New-Item $folderpath -ItemType directory | Out-Null
}
$acl = Get-Acl $folderpath
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($group.SamAccountName, "Read","ContainerInherit,ObjectInherit","None","Allow")
$acl.SetAccessRule($objACE)
Set-Acl -Path $folderpath -AclObject $acl
}
s. ergänzter Code im letzten Kommentar ...
Geht aufs Haus .