PowerShell - User -Ordner anlegen und Berechtigungen setzen
- Windows Server 2003 R2
- Windows 7 Pro
Hallo,
ich versuche gerade mir ein kleines Skript zu basteln, welches mir das Anlegen neuer User vereinfachen soll.
Im AD angelegt sind die User schon. Ich will nur die Homedirectories und die Berechtigung des Users auf den Ordner setzen.
Zuerst möchte ich es mal nur mit einem User versuchen. Einfach um das Verständnis bezüglich PowerShell und Zugriffsberechtigungen zu verinnerlichen.
Was ich bisher habe:
Das funktioniert mit der Außnahme, dass der User zwar gelistet wird, aber keine Zugriffsberechtigungen für ihn gesetzt werden.
Kann mir hier jemand unter die Arme greifen?
Freue mich über jede Antwort.
Liebe Grüße
Tray
- Windows 7 Pro
Hallo,
ich versuche gerade mir ein kleines Skript zu basteln, welches mir das Anlegen neuer User vereinfachen soll.
Im AD angelegt sind die User schon. Ich will nur die Homedirectories und die Berechtigung des Users auf den Ordner setzen.
Zuerst möchte ich es mal nur mit einem User versuchen. Einfach um das Verständnis bezüglich PowerShell und Zugriffsberechtigungen zu verinnerlichen.
Was ich bisher habe:
# Hier wird einfach nur der Ordner mit dem Usernamen angelegt
$NewUser = 'Max'
$NewFolder = New-Item -Path "B:\$NewUser" -ItemType "directory"
# Hier soll dann die Berechtigung vergeben werden
$acl = get-acl $NewUser
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,'FullControl','Allow')
$acl.SetAccessRule($ar)
set-acl $NewUser $acl
Das funktioniert mit der Außnahme, dass der User zwar gelistet wird, aber keine Zugriffsberechtigungen für ihn gesetzt werden.
Kann mir hier jemand unter die Arme greifen?
Freue mich über jede Antwort.
Liebe Grüße
Tray
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 175605
Url: https://administrator.de/contentid/175605
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
15 Kommentare
Neuester Kommentar
Hallo,
dann würde ich dir raten, die Befehle mal nicht als Skript einzugeben, sondern einzeln in der PS einzutippen. Und nach jedem Schritt kannst du dir das Ergebnis anzeigen lassen. (also z.B. nach Zeile 7 "$newFolder | fl" und nach Z. 10 "$acl | fl"). Für gut möglich halte ich es z.B., dass er den User "marc" nicht auflösen kann (wobei er dann eine Fehlermeldung in Zeile 12 bringen müsste).
Gruß
Filipp
dann würde ich dir raten, die Befehle mal nicht als Skript einzugeben, sondern einzeln in der PS einzutippen. Und nach jedem Schritt kannst du dir das Ergebnis anzeigen lassen. (also z.B. nach Zeile 7 "$newFolder | fl" und nach Z. 10 "$acl | fl"). Für gut möglich halte ich es z.B., dass er den User "marc" nicht auflösen kann (wobei er dann eine Fehlermeldung in Zeile 12 bringen müsste).
Gruß
Filipp
Moin moin
Wozu soll sa gut sein? Für eine Ausgabe?
Da machst du besser so:
Was dein Ursprungsskript angeht (ich hab das mal auf meine Bedürfnisse umgeschrieben):
Funktioniert ganz hervorragend. Die Rechte sind zwar etwas "dünn", aber mehr wird ohne Vererbung auch nicht gehen.
Achja Vererbung:
@ bastla
Gruß L.
Wozu soll sa gut sein? Für eine Ausgabe?
$Acl.SetAccessRule($Ar) | fl
$Acl.SetAccessRule($Ar)
Write $Acl |fl
Kann das was mit dem Betriebssystem oder den ExecutionPolicy´s der PowerShell zu tun haben?
Nein ich denke nicht.Was dein Ursprungsskript angeht (ich hab das mal auf meine Bedürfnisse umgeschrieben):
# Hier wird einfach nur der Ordner mit dem Usernamen angelegt
$NewUser = 'Logan000'
$path = "C:\_work\" + $NewUser
$NewFolder = New-Item -Path $path -ItemType "directory"
# Hier soll dann die Berechtigung vergeben werden
$acl = get-acl $NewFolder
#write-output $acl | fl #nur zum testen
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","Allow")
#write-output $ar | fl #nur zum testen
$acl.SetAccessRule($ar)
set-acl $NewFolder $acl
Funktioniert ganz hervorragend. Die Rechte sind zwar etwas "dünn", aber mehr wird ohne Vererbung auch nicht gehen.
Achja Vererbung:
@ bastla
Zitat von @bastla:
@logan
> Hat der User unter dem das Skript ausgefürt wird Vollzugriff auf das neue Verzeichniss?
Wenn er das Verzeichnis erstellen konnte (und damit auch Besitzer ist) ...
.. hängen seine Rechte normaler weise von den darüber vererbten Rechten ab.@logan
> Hat der User unter dem das Skript ausgefürt wird Vollzugriff auf das neue Verzeichniss?
Wenn er das Verzeichnis erstellen konnte (und damit auch Besitzer ist) ...
Gruß L.
Moin Moin
nicht für Unterordner und Dateien ) Vollzugriff hat.
Das was Dir wahrscheinlich vorschwebt erreichst du nur wenn du die Vererbung berücksichtigst und die Rechte sowohl für Ordner als auch Dateien setzt.
z.B. so:
Hier noch ein helfender Hinweis zu den Parametern von filesystemaccessrule.
Gruß L.
Meinst du mit "dünne Rechte", dass bei Spezialberechtigungen ein Häkchen gesetzt ist?
Ja genau. Wenn du via "Erweitert" nachschaust wirst du feststellen das dein User nur für diesen Ordner (Das was Dir wahrscheinlich vorschwebt erreichst du nur wenn du die Vererbung berücksichtigst und die Rechte sowohl für Ordner als auch Dateien setzt.
z.B. so:
...
#write-output $acl | fl #nur zum testen
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","ObjectInherit","None","Allow")
$acl.SetAccessRule($ar)
$ar2 = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","ContainerInherit","None","Allow")
$acl.AddAccessRule($ar2)
set-acl $NewFolder $acl
Hier noch ein helfender Hinweis zu den Parametern von filesystemaccessrule.
Gruß L.