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 - User -Ordner anlegen und Berechtigungen setzen

Mitglied: tray-park

tray-park (Level 1) - Jetzt verbinden

01.11.2011, aktualisiert 16:29 Uhr, 23173 Aufrufe, 15 Kommentare

- 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:

01.
# Hier wird einfach nur der Ordner mit dem Usernamen angelegt 
02.
$NewUser = 'Max' 
03.
$NewFolder = New-Item -Path "B:\$NewUser" -ItemType "directory" 
04.
 
05.
# Hier soll dann die Berechtigung vergeben werden 
06.
$acl = get-acl $NewUser 
07.
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,'FullControl','Allow') 
08.
$acl.SetAccessRule($ar) 
09.
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
Mitglied: Logan000
01.11.2011 um 15:15 Uhr
Moin moin

Der Code sieht ok aus.
Das einzige was mir so aus dem stand dazu einfällt:

Hat der User untrer dem das Skript ausgefürt wird Vollzugriff auf das neue Verzeichniss?

Gruß L.
Bitte warten ..
Mitglied: bastla
01.11.2011 um 15:41 Uhr
@Logan
Hat der User untrer dem das Skript ausgefürt wird Vollzugriff auf das neue Verzeichniss?
Wenn er das Verzeichnis erstellen konnte (und damit auch Besitzer ist) ...

Grüße
bastla
Bitte warten ..
Mitglied: filippg
01.11.2011 um 16:00 Uhr
Hallo,

also manchmal leide ich ja unter akutem schielen & Denkfehlern. Aber ich würde sagen, du vergibst die Rechte nicht auf den Folder, sondern auf den User. $acl = get-acl $NewFolder könnte besser funktionieren.

Gruß

Filipp
Bitte warten ..
Mitglied: tray-park
01.11.2011 um 16:09 Uhr
Hallo in die Runde,

danke für die rasche Antwort.

Ich führe das Skript als lokaler Admin aus. Sollte also kein Berechtigungsproblem auf der Seite sein.

01.
# Hier wird einfach nur der Ordner mit dem Usernamen angelegt 
02.
cd\ 
03.
b: 
04.
 
05.
$NewUser = 'max' 
06.
#$NewFolder = New-Item -Path "B:\$NewUser" -ItemType "directory" 
07.
$NewFolder ="B:\$NewUser" 
08.
 
09.
# Hier soll dann die Berechtigung vergeben werden 
10.
$acl = get-acl $NewFolder 
11.
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,'FullControl','Allow') 
12.
$acl.SetAccessRule($ar) 
13.
set-acl $NewUser $acl
Hab das nun umgeschrieben... Funktioniert aber leider auch nicht.

Was kann das nur sein?

Liebe Grüße

Tray
Bitte warten ..
Mitglied: bastla
01.11.2011 um 16:12 Uhr
Hallo tray-park!

Und wenn Du in Zeile 13 auch "$NewFolder" verwendest?

Grüße
bastla
Bitte warten ..
Mitglied: tray-park
01.11.2011 um 16:22 Uhr
Hi Bastla,

gleiches Resultat

Grüße

Tray
Bitte warten ..
Mitglied: filippg
01.11.2011 um 16:26 Uhr
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
Bitte warten ..
Mitglied: tray-park
01.11.2011 um 16:28 Uhr
Hi,

die PowerShell müsste doch trotzdem Fehler ausgeben. Egal ich checks mal.

Ganz blöde Frage:

Kann das was mit dem Betriebssystem oder den ExecutionPolicy´s der PowerShell zu tun haben?

Grüße
Bitte warten ..
Mitglied: tray-park
01.11.2011 um 16:44 Uhr
Hi,

tatsächlich folgende Ausgabe:
$Acl.SetAccessRule($Ar) | fl
01.
PS C:\Users\Max> $Acl.SetAccessRule($Ar) | fl 
02.
Method invocation failed because [System.Object[]] doesn't contain a method nam 
03.
ed 'SetAccessRule'. 
04.
At line:1 char:19 
05.
+ $Acl.SetAccessRule <<<< ($Ar) | fl 
06.
    + CategoryInfo          : InvalidOperation: (SetAccessRule:String) [], Run 
07.
   timeException 
08.
    + FullyQualifiedErrorId : MethodNotFound
Set-Acl "B:\max" $Acl | fl
01.
PS C:\Users\Max> Set-Acl "B:\max" $Acl | fl 
02.
Set-Acl : Cannot convert 'System.Object[]' to the type 'System.Security.AccessC 
03.
ontrol.ObjectSecurity' required by parameter 'AclObject'. Specified method is n 
04.
ot supported. 
05.
At line:1 char:8 
06.
+ Set-Acl <<<<  "B:\max" $Acl | fl 
07.
    + CategoryInfo          : InvalidArgument: (:) [Set-Acl], ParameterBinding 
08.
   Exception 
09.
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Comma 
10.
   nds.SetAclCommand
Methode und Argument nicht gefunden? Kann das was mit der Pipe zu tun haben?

Grüße
Bitte warten ..
Mitglied: Logan000
02.11.2011 um 14:01 Uhr
Moin moin

Wozu soll sa gut sein? Für eine Ausgabe?
01.
$Acl.SetAccessRule($Ar) | fl
Da machst du besser so:
01.
$Acl.SetAccessRule($Ar)  
02.
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):
01.
# Hier wird einfach nur der Ordner mit dem Usernamen angelegt 
02.
$NewUser = 'Logan000' 
03.
$path = "C:\_work\" + $NewUser 
04.
$NewFolder = New-Item -Path $path -ItemType "directory" 
05.
 
06.
# Hier soll dann die Berechtigung vergeben werden 
07.
$acl = get-acl  $NewFolder  
08.
#write-output $acl | fl   #nur zum testen 
09.
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","Allow") 
10.
#write-output $ar | fl #nur zum testen 
11.
$acl.SetAccessRule($ar) 
12.
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.

Gruß L.
Bitte warten ..
Mitglied: bastla
02.11.2011 um 14:49 Uhr
@Logan
hängen seine Rechte normaler weise von den darüber vererbten Rechten ab.
Soferne nicht "Schreiben" sein einziges Recht wäre, könnte er als Besitzer beliebige Rechte (auch für sich selbst) setzen ...

Grüße
bastla
Bitte warten ..
Mitglied: tray-park
02.11.2011 um 15:16 Uhr
Hi in die Runde,

01.
$NewUser = 'max' 
02.
$path = "B:\" + $NewUser 
03.
$NewFolder = New-Item -Path $path -ItemType "directory" 
04.
 
05.
# Hier soll dann die Berechtigung vergeben werden 
06.
$acl = get-acl  $NewFolder  
07.
#write-output $acl | fl   #nur zum testen 
08.
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","Allow") 
09.
#write-output $ar | fl #nur zum testen 
10.
$acl.SetAccessRule($ar) 
11.
set-acl $NewFolder $acl
Ich hab es mal so versucht, aber leider klappt das auch nicht. Meinst du mit "dünne Rechte", dass bei Spezialberechtigungen ein Häkchen gesetzt ist?

Liebe Grüße

Tray
Bitte warten ..
Mitglied: Logan000
02.11.2011 um 15:29 Uhr
Moin Moin

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 (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:
01.
... 
02.
#write-output $acl | fl   #nur zum testen 
03.
$ar = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","ObjectInherit","None","Allow") 
04.
$acl.SetAccessRule($ar) 
05.
$ar2 = new-object system.security.accesscontrol.filesystemaccessrule($NewUser,"FullControl","ContainerInherit","None","Allow") 
06.
$acl.AddAccessRule($ar2) 
07.
set-acl $NewFolder $acl
Hier noch ein helfender Hinweis zu den Parametern von filesystemaccessrule.

Gruß L.
Bitte warten ..
Mitglied: tray-park
07.11.2011 um 10:14 Uhr
Hi Logan000,

perfekt. Es hat funktioniert. Dankeschön.

Ich danke natürlich auch vielmals in die Runde.

Nun werd ich mal weiter basteln.

Liebe Grüße

Tray
Bitte warten ..
Mitglied: Logan000
08.11.2011 um 07:19 Uhr
Moin Moin

Bitteschön.
Sein doch so gut und setzte den Beitrag auf gelöst.
Danke.

Gruß L.
Bitte warten ..
Ähnliche Inhalte
Windows Userverwaltung

Powershell Ordner mit Berechtigungen anlegen

Frage von IT-CoreWindows Userverwaltung3 Kommentare

Guten Tag, Ich schreibe ein Script um einen Ablauf zu automatisieren. Bei mir werden immer wieder mehrere Datein in ...

Batch & Shell

E-Mail Adresse anlegen am angelegten User Powershell

gelöst Frage von patrickebertBatch & Shell5 Kommentare

Hallo Liebe Leute, bin gerade dabei ein PowershellScript zu schreiben welches an einem angelegten User die E-Mail Adresse am ...

Batch & Shell

Powershell - Registrywert setzen

gelöst Frage von DaniBatch & Shell2 Kommentare

Guten Abend zusammen, ich versuche in der Windowsregistry einen Key wie diesen anzulegen: Dazu habe ich folgenden Code entworfen: ...

Windows Server

PowerShell Script - Ordnerrechte setzen

Frage von desmondjamesWindows Server7 Kommentare

Hallo Community, ich bitte um Hilfe. Ich bin nicht so fit in Powershell, benötige aber ein Script. Ich habe ...

Neue Wissensbeiträge
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 10 StundenWindows Server1 Kommentar

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 16 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 18 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...