• Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN
info@firstattribute.com
by FirstAttribute
Active Directory FAQActive Directory FAQ
  • Active Directory
    • AD Consulting
    • AD Design
      • Domain Name festlegen
      • Domain Struktur einrichten
      • Forest Struktur definieren
    • AD Management
    • AD Automation
      • Dynamic Access Control (DAC)
    • AD Federation Services
      • ADFS Betrieb
      • ADFS und Office365
      • ADFS und Cisco Unified Communications Manager
      • SAML und ADFS 2.0
  • Azure / M365
    • Azure AD
    • Microsoft 365 (O365)
  • Migration
    • Active Directory Migration
    • Exchange Migration
    • File Server Migration
    • Lotus Notes Migration
    • Novell Migration
  • Wissen
    • Alle Beiträge
    • Administration
    • PowerShell
    • Migration
    • Exchange
    • Tools
  • Kontakt
    • Wir über uns
    • Kontakt
  • EN

Powershell – Home Directory anlegen und Berechtigungen vergeben

Mrz 1, 2019 (Letztes Update) | Posted by Steve König KnowHow, PowerShell |

 

Powershell – Home Directory anlegen und Berechtigungen vergeben

Einen neuen Nutzer im Active Directory anzulegen ist schnell getan, doch das reicht meistens nicht aus. Der Mitarbeiter braucht auch noch Berechtigungen, Zugänge und ein Home Directory.

Wie man letzteres ganz einfach über PowerShell anlegen und dem Nutzer entsprechende Berechtigungen vergeben kann, möchte ich in diesem Beitrag kurz zeigen.

 
Ich möchte Ihnen Schritt für Schritt erklären, welche cmdlets ich in meinem Script benutze und welche Funktionen diese haben. Die Ungeduldigen unter Ihnen finden am Ende des Beitrags das komplette Script zum Kopieren.
 

Inhaltsverzeichnis

  • 1 Home Directory anlegen
  • 2 Berechtigungen vergeben
  • 3 Ergebnis
  • 4 Komplettes Script
  • 5 AD User automatisiert mit Homeverzeichnis anlegen

 

Home Directory anlegen

Beginnen wir mit dem Anlegen des Homeshares für einen neuen Nutzer. Dazu brauchen wir erst einmal drei Informationen in Form von Variablen, die wir unserem Script mitgeben müssen:

  • Die Identität des Nutzers
  • Der vollständige Pfad zu dem neuen Ordner
  • Der Laufwerkbuchstabe, den der Nutzer im Explorer sehen soll

Die Identität des Nutzers mache ich in diesem Beispiel anhand des sAMAccountNames fest. Diesen übergebe ich in dem Script als Eingabeparameter. Den vollen Pfad baue ich aus dem Freigabepfad sowie dem sAMAccountName zusammen, den Laufwerkbuchstaben lege ich einfach fest. Sie können das natürlich Ihren Anforderungen entsprechend variieren:

homeshare_script_1

Zuerst einmal möchte ich überprüfen, ob es einen Nutzer mit diesem sAMAccountName überhaupt in der Domäne gibt. Dazu führe ich einfach Get-AdUser aus und schaue, ob der zurückgegebene Wert gleich NULL ist. Die weitere Ausführung des Scripts macht natürlich nur Sinn, wenn dies nicht der Fall ist.

homeshare_script_2

Innerhalb der If-Anweisung können wir also sicher sein, dass der Nutzer existiert und deswegen das Home Directory anlegen. Dies geschieht in zwei Schritten:

  • Dem Nutzer ein Home-Verzeichnis und Laufwerksbuchstaben zuweisen
  • Das entsprechende Verzeichnis für den Nutzer anlegen

Die Reihenfolge spielt dabei keine Rolle. Die Zuweisung von Laufwerksbuchstaben und Home-Verzeichnis geschieht einfach, indem ich die entsprechenden Attribute im Active Directory mit dem Set-AdUser cmdlet setze. Das eigentliche Verzeichnis lege ich anschließend mit New-Item an. Der Parameter -force sorgt dabei dafür, den Abfrage-Dialog zu unterdrücken, sodass ich nicht jedes Mal bestätigen muss, dass ich das Verzeichnis auch wirklich anlegen möchte.

Ab jetzt verwende ich bei meinen Befehlen auch überall explizit den Parameter –ea Stop, damit beim Auftreten eines Fehlers die Ausführung des Scripts abgebrochen wird.

homeshare_script_3

 

Berechtigungen vergeben

Das Script kann jetzt schon eigenständig ausgeführt werden. Es würde, sofern der ausführende Nutzer genügend Berechtigungen hat, funktionieren. Allerdings wird das neue Verzeichnis mit Standard-Berechtigungen angelegt. Insofern der Nutzer also kein Administrator ist, kann er keine Dateien oder Ordner innerhalb seines neuen Home-Verzeichnisses anlegen oder verändern. Diese Berechtigungen geben wir ihm im nächsten Schritt.

Dazu brauchen wir eine Referenz auf die Access Control List (ACL) des eben angelegten Verzeichnisses. Die erhalten wir mit einem simplen Befehl:

homeshare_script_4

Dieser ACL wollen wir jetzt eine neue FileSystemAccessRule hinzufügen, die die entsprechenden Berechtigungsregeln enthält. Hierfür gibt es ein entsprechendes .NET-Objekt, das wir für unsere Zwecke anpassen können. Dazu definiere ich zuerst (mit Hilfe von weiteren .NET-Objekten) diese Eigenschaften, die Berechtigungen und Vererbung festlegen. In diesem Fall möchte ich dem Nutzer erlauben, neue Dateien und Ordner anzulegen und diese auch zu verändern. Dafür definiere ich folgende Eigenschaften:

homeshare_script_5

Einer Übersicht über alle FileSystemRights, die hier definiert werden können, finden Sie in der MSDN unter folgendem Link.

Jetzt müssen wir noch die Vererbung definieren. Im Normalfall wollen wir schließlich auch, dass der Nutzer alle Unterordner und die darin enthaltenen Dateien ändern kann. Dazu definiere ich noch folgende Eigenschaften:

homeshare_script_6

Jetzt haben wir alle Eigenschaften, um ein neues FileSystemAccessRule-Objekt erzeugen zu können. Zusätzlich muss das Objekt aber noch wissen, an wen diese Berechtigungen vergeben werden sollen. Da wir den Nutzer bereits ausgelesen haben, kann ich hier einfach dessen Security Identifier (SID) mit übergeben:

2016-01-25_15h26_59

Diese neue Access-Rule füge ich jetzt einfach der ACL hinzu, die wir vorhin ausgelesen hatten.

2016-01-25_14h41_16

Im letzten Schritt muss die ACL des Verzeichnisses noch aktualisiert werden. Dazu müssen wir einfach nur die alte ACL mit der neuen ACL, die aus der alten ACL und unserem neuen Eintrag besteht, überschreiben:

2016-01-25_14h41_26

 

Ergebnis

Jetzt können wir das Script aufrufen, einen sAMAccountName eintippen und das Script legt das Verzeichnis an und vergibt die entsprechenden Berechtigungen.

powershell_homeshare

Wenn Sie zu dem neu angelegten Ordner wechseln, können Sie in den Eigenschaften des Ordners die neuen Berechtigungen des Nutzers sehen. Leider werden diese hier als „Special Permissions“ angezeigt, ein Klick auf die „Erweiterten Eigenschaften“ zeigt uns allerdings, dass – wie im Script festgelegt – der Nutzer nur Modify-Berechtigungen besitzt.

folder_permissions

Legen Sie Unterordner und Dateien an, können Sie auch hier in den Eigenschaften sehen, dass die Berechtigungen entsprechend richtig weitervererbt werden:

permissions_inheritance

 

Komplettes Script

Zum Abschluss gibt es hier das komplette Script „Home Directory anlegen“ zum Kopieren & Einfügen:
 

param([Parameter(Mandatory=$true)][String]$samAccountName)

$fullPath = „\\srv2012r2\Users\{0}“ -f $samAccountName
$driveLetter = „Z:“

$User = Get-ADUser -Identity $samAccountName

if($User -ne $Null) {
    Set-ADUser $User -HomeDrive $driveLetter -HomeDirectory $fullPath -ea Stop
    $homeShare = New-Item -path $fullPath -ItemType Directory -force -ea Stop

    $acl = Get-Acl $homeShare

    $FileSystemRights = [System.Security.AccessControl.FileSystemRights]“Modify“
    $AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
    $InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]“ContainerInherit, ObjectInherit“
    $PropagationFlags = [System.Security.AccessControl.PropagationFlags]“InheritOnly“

    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($User.SID, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType)
    $acl.AddAccessRule($AccessRule)

    Set-Acl -Path $homeShare -AclObject $acl -ea Stop

    Write-Host („HomeDirectory created at {0}“ -f $fullPath)
}

 

AD User automatisiert mit Homeverzeichnis anlegen

Ein besonders schneller Weg Benutzer anzulegen, ist die Verwendung des FirstWare IDM-Portals. Dies ist bereits mit der SmartEdition möglich.

Die ProEdition bietet die Möglichkeit PowerShell-Skripte wie diesen hier zu integrieren.
Auf diese Weise kann direkt beim Anlegen eines neuen Benutzers auch ein Homeverzeichnis nach eigenen Vorgaben erstellt werden.

FirstWare-idm-portal-benutzer-anlegen

Die PowerShell Unterstützung von FirstWare IDM-Portal ermöglicht auch das automatisierte Anlegen von Exchange-Mailboxen und vielem mehr.

 


 

FirstAttribute AG

Dieser Artikel entstand bei Projekten der FirstAttribute AG
AD Consulting
| AD Migration

Für Fragen zu unseren Leistungen stehen
wir Ihnen unter Kontakt gern zur Verfügung.


Artikel weiterempfehlen:
  • teilen
  • tweeten
  • sharen
  • xingen
  • mailen
Artikel erstellt am: 28.01.2016
Tags: BerechtigungenFirstWareHome DirectoryHome FolderHome ShareHome-Verzeichnis
0

You also might be interested in

AD basiertes Intranet Telefonbuch

AD basiertes Intranet Telefonbuch

Dez 1, 2014

Ich möchte Euch kurz vorstellen, wie man mit Hilfe des[...]

"Senden als"-Berechtigung

Exchange – „Senden als“-Berechtigung mit PowerShell

Sep 19, 2017

In Exchange gibt es die Möglichkeit, eine „Senden als“-Berechtigung für[...]

AD Inspector 2015

Active Directory Reporting einfach gemacht – Der AD Inspector 2015

Sep 8, 2015

Wächst das Unternehmen, so wächst proportional dazu das Active Directory[...]

4 Comments

Leave your reply.
  • Alex
    · Antworten

    5. Januar 2021 at 1:26 PM

    Hi, in meinem Fall funktioniert das Script ganz gut, bis auf eine Kleinigkeit. Der User bekommt nur auf die Unterordner und Dateien Zugriff. D.h. er kann sich das Netzlaufwerk gar nicht zuweisen, weil die Berechtigung auf den tatsächlichen Ordner fehlt.

    Habe ich etwas übersehen?

  • Paul
    · Antworten

    3. April 2019 at 3:58 PM

    Hallo,

    Vorab vielen Dank für Ihr hilfreiches Skript.

    Leider bekommt der Benutzer mit diesem Skript nicht nur die Berechtigung auf den Pfad: \\srv2012r2\Users\test.user , sondern auch auf alle Unterordern Im Verzeichnis: \\srv2012r2\Users angezeigt und darf in diesen lesen. Gibt es eine Möglichkeit, dem Benutzer die Berechtigung NUR auf seinen eigenen Ordner zu vergeben?

    Vorab vielen Dank für Ihre Hilfe.

    Mit besten Grüße,
    Paul Schulz.

  • Peter Schneider
    · Antworten

    23. September 2018 at 8:12 AM

    Your script explains the basics, but does not solve the initial problem.
    The home directory it creates misses two very important things.
    1) It still has inheritence enabled.
    2) The domain user is not deleted.

    This script creates a diectory that can be read by any user in the domain.
    I don’t think thats a good idea.

    • Steve König
      · Antworten

      Author
      27. September 2018 at 3:25 PM

      Hi Peter,

      I’m sorry, I am not quite sure what you are talking about.
      1) Of course inheritance is enabled, this is exactly what the script is doing, since the user the home directory is created for also needs rights to any subdirectories and files.
      2) What do you mean by „The domain user is not deleted“. The user itself should of course not be deleted. Are you talking about the „Domain Users“ group?
      -> Yes, the script leaves read access for the home directory for all „Domain Users“ in there. I don’t see why this is such a bad idea, though. In most cases, there is no reason for others to not have read access. If of course you want to make the Home Directory „private“ you can simply remove the „Domain Users“ group from the rights list. This can be done in the same script with $acl.RemoveAccessRule($ruleToRemove), whereas $ruleToRemove contains the rule with read access for the Domain Users.

Leave a Reply

<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>
Cancel Reply

FirstWare IDM-Portal im Test: IT-Administrator 08-2022

 

ADFAQ-FirstAttribute

Wer schreibt ?

Team der FirstAttribute AG

Consultants und Entwickler der FirstAttribute arbeiten seit mehr als 20 Jahren in IAM- und Cloud-Transition-Projekten.
Zusammen verfügen Sie über einen wertvollen Erfahrungsschatz im Bereich Active Directory und Azure AD und teilen diesen auf Active Directory FAQ.

Neueste Artikel

  • 8 Tipps für mehr Sicherheit in Active Directory und Backups von AD
  • Azure AD Custom Security Attributes ermöglichen flexible Berechtigungsstrukturen
  • Dateiberechtigungen in MS Teams und SharePoint Online verwalten – So funktioniert es
  • AD-Gruppen in Microsoft Teams verwenden – Dynamische Gruppen in der Praxis
  • Verbindung zwischen Microsoft 365 und SharePoint Online zu Azure AD

Unsere IAM-Lösungen

Ihre IAM-Lösung: FirstWare IDM-Portal

 

my-IAM für Cloud Identity Management in Microsoft Teams

Kontakt aufnehmen

Sie haben eine Frage oder Anmerkung? Schicken Sie uns schnell eine Nachricht.

Nachricht senden
Jetzt AD Tasks vereinfachen und delegieren: FirstWare IDM-Portal

Folgen Sie uns

Kontakt

  • FirstAttribute AG
  • Am Büchele 18, 86928 Hofstetten, Germany
  • +49 89 215 442 400
  • https://www.firstattribute.com

Schlagwörter

.Net ACL Active Directory AD LDS AD Objekt Azure AD Berechtigung Cloud cmdlets Delegation Domain Controller dynamicgroup dynamische Gruppen Exchange Exchange-Ordner Exchange-Postfach Exchange Migration Federation FirstWare Get-Mailbox Global Catalog Group Policy Gruppen Gruppenmitgliedschaft IDM-Portal LDAP m365 Microsoft Azure Migration New-ADUser Novell NTFS Office 365 PowerShell QMM QMM AD QMM Exchange Quest Migration Manager Schema Set-ADUser SID SID History Update Windows 10 Windows Server 2012 R2

Neueste Kommentare

  • activedirectoryfaq.com sharepoint login - infoslist bei Windows 365 und Azure AD verstehen in Theorie und Praxis
  • Domäne Letzte Anmeldung - ObenGesichert.com bei LastLogon vs. LastLogonTimestamp
  • Teams Code Zur Anmeldung - ObenGesichert.com bei Authentifizierung für MS Teams in hybriden Netzwerken
Login
Impressum
Datenschutzerklärung

© 2023 · Active-Directory-FAQ by firstattribute.com

Prev Next