r00t-1337
Goto Top

Basisordner via PowerShell setzen

Hallo Zusammen,

ich habe ein Problem mit dem erstellen des Basisordners unter Server 2008 r2.

Den Basisordner setze ich bei allen Benutzern mit dem Befehl:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\$($_.Samaccountname)"}

Das ganze wird auch korrekt im AD-Konto angezeigt:

b7d4ed71328f7e49881337e390bf6f86

Jedoch wird der Ordner nicht unter \\Server\vol2\home\ mit dem vn.nn des Benutzers erstellt.

Gehe ich jetzt ins AD-Konto des Users rein, und klicke hier nochmal auf den Basisordner und verändere ein Zeichen und klicke auf übernehmen wird der Ordner unter \\Server\vol2\home\vn.nn angelegt ...

Jemand eine Idee ob es hier noch einen Befehl gibt damit der Ordner auch gleich angelegt wird mit Vollzugriff für den jeweiligen Benutzer?

Vielen Dank schonmal!

Content-ID: 228669

Url: https://administrator.de/forum/basisordner-via-powershell-setzen-228669.html

Ausgedruckt am: 22.12.2024 um 22:12 Uhr

LennyLinux
LennyLinux 04.02.2014 um 14:15:07 Uhr
Goto Top
Hallo r00t-1337,

der Befehl an sich funktioniert so. Ich habe in meiner Schatzkiste nachgesehen und einen Link aus dem technet von MS gefunden.

http://blogs.technet.com/b/heyscriptingguy/archive/2013/06/06/creating- ...

Mit diesen Informationen habe ich damals ein Tool programmiert, welches über ein WebGui Benutzer anlegen kann. Hier hat auch das mit dem Homelaufwerk gepasst.

Falls du noch Infos brauchst, immer melden.

Grüße
Lenny Linux
colinardo
colinardo 04.02.2014 um 14:21:37 Uhr
Goto Top
Hi,
wenn du anstatt den Usernamen in deinem Befehl aufzulösen, die Variable %username% im Homepfad verwendest, sollte der Ordner von Windows normalerweise automatisch angelegt werden.
http://blog.alekel.de/homeverzeichnis-und-profil-automatisch-anlegen/
"\\Server\vol2\home\%username%"}
Grüße Uwe
r00t-1337
r00t-1337 04.02.2014 um 14:43:18 Uhr
Goto Top
Hi und danke für die Antworten.

@colinardo - ich habe meinen Befehl mal so umgeändert:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}

Es steht dann zwar im jeweligen AD-Konto der Pfad so drinnen. \\Server\vol2\home\%username%
jedoch wird der Ordner immer noch nicht angelegt. Erst wenn ich ins Konto gehe, etwas verändere und auf OK klicke legt er Ihn entsprechend an.


@LennyLinux - geht das nicht auf direktem Wege mit einem zusätzlichen Parameter in PowerShell?


Besten Dank1
colinardo
colinardo 04.02.2014 aktualisiert um 14:45:22 Uhr
Goto Top
Zitat von @r00t-1337:
Es steht dann zwar im jeweligen AD-Konto der Pfad so drinnen. \\Server\vol2\home\%username%
jedoch wird der Ordner immer noch nicht angelegt. Erst wenn ich ins Konto gehe, etwas verändere und auf OK klicke legt er Ihn entsprechend an.
Wird erst beim ersten Anmelden des Users an der Domäne erstellt ...
LennyLinux
LennyLinux 04.02.2014 um 14:55:17 Uhr
Goto Top
Habe mal gebastelt:

Die Variablen $UserName; $HomePath musst du nur entsprechend anpassten.

Bsp: $UserName = "testuse" $HomePath = "\\Server\vol2\home\

New-Item -Name $UserName -ItemType Directory -Path $HomePath | Out-Null
Set-ADUser $UserName -HomeDirectory "$HomePath\$UserName" -HomeDrive P:


getestet auf einem WindowsServer 2k8 r2 mit powershell 1.2
LennyLinux
LennyLinux 04.02.2014 um 14:58:43 Uhr
Goto Top
Was ich noch bemerkt habe:

Spitzelt da eine 10.* hinter der Verschleiherung hervor?

Ich kann dir nur empfehlen die entrpechenden FQDN einzutragen. face-smile

Grüße

Lenny
r00t-1337
r00t-1337 04.02.2014 aktualisiert um 15:03:42 Uhr
Goto Top
Hi, danke ...

Kann dir gerade nicht folgen, beim Anmelden in der Domäne mit dem Befehl:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}

klappt es nicht. Der Ordner wird nicht erstellt.

Was meinst du mit "Die Variablen $UserName; $HomePath musst du nur entpsrechen anpassen ... ? Wie würde denn das mit deinem Vorschlag dann in diesem Befehl lauten?:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\$($_.Samaccountname)"}

oder in diesem:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}


Danke face-wink
r00t-1337
r00t-1337 04.02.2014 um 15:04:51 Uhr
Goto Top
Zitat von @LennyLinux:

Was ich noch bemerkt habe:

Spitzelt da eine 10.* hinter der Verschleiherung hervor?

Ich kann dir nur empfehlen die entrpechenden FQDN einzutragen. face-smile

Grüße

Lenny

Jupp 10. folgt dann ...
LennyLinux
LennyLinux 04.02.2014 aktualisiert um 15:14:24 Uhr
Goto Top
Zitat von @r00t-1337:
Was meinst du mit "Die Variablen $UserName; $HomePath musst du nur entpsrechen anpassen ... ? Wie würde denn das mit
deinem Vorschlag dann in diesem Befehl lauten?:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet
14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST"
-ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\$($_.Samaccountname)"}

oder in diesem:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet
14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST"
-ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}

was dir fehlt ist der Befehl zum anlegen des Directorys im FileSystem. Deswegen ist der Ordner auch nicht da.

Uwe hat schon recht, dass die Erstellung des Ordners bei erstmaliger Anmeldung an der Domäne stattfindet. Wenn das nicht so sein soll, musst den Ordner mit dem Befehl

New-Item -Name $UserName -ItemType Directory -Path $HomePath | Out-Null

extra anlegen.

Ich hoffe ich konnte dir helfen.
colinardo
colinardo 04.02.2014 aktualisiert um 15:15:48 Uhr
Goto Top
Zitat von @LennyLinux:
Habe mal gebastelt:
das würde ich lieber lassen, dann ist nämlich nicht der User der Besitzer des Ordners sondern der Account mit dem das Script ausgeführt wurde ... wenn schon dann bitte mit Set-ACL und Konsorten die Rechte richtig setzen.

wenn man es wie oben schon gesagt macht wird der Ordner automatisch beim ersten Anmelden des Users erstellt und die Rechte sitzen entsprechend korrekt !
LennyLinux
LennyLinux 04.02.2014 um 15:16:18 Uhr
Goto Top
Zitat von @colinardo:

das würde ich lieber lassen, dann ist nämlich nicht der User der Besitzer des Ordners sondern der Account mit dem das
Script ausgeführt wurde ... wenn schon dann bitte mit Set-ACL und Konsorten die Rechte richtig setzen.

Hallo Uwe,

das ist natürlich klar. Die Berechtigungen müssen entsprechend mitgegeben werden.

Sollte kein Pfusch werden face-smile nur eine Hilfestellung.
r00t-1337
r00t-1337 04.02.2014 um 15:35:47 Uhr
Goto Top
Hi Zusammen,

teilweise, bin aber was PowerShell angeht ein echter Neuling weswegen ich mir teilweise schwer tue euch gleich zu folgen.

Wo würde SET-ACL denn im Skript angegeben werden?

"was dir fehlt ist der Befehl zum anlegen des Directorys im FileSystem. Deswegen ist der Ordner auch nicht da.

Uwe hat schon recht, dass die Erstellung des Ordners bei erstmaliger Anmeldung an der Domäne stattfindet. Wenn das nicht so sein soll, musst den Ordner mit dem Befehl

New-Item -Name $UserName -ItemType Directory -Path $HomePath | Out-Null

extra anlegen.

Ich hoffe ich konnte dir helfen."

-> Mit der Domänenanmeldung wird der Ordner bei mir nicht angelgt, was dann aber wahrscheinlich am falschen Befehl liegt nehme ich an?

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet
14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST"
-ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}

Sry ... face-sad
r00t-1337
r00t-1337 04.02.2014 um 16:05:52 Uhr
Goto Top
Oder die "Deppen-Methode" machen, via PowerShell ändern mit:

Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN" | foreach {Set-ADUser $_ -StreetAddress "Teststreet
14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST"
-ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"}

und dann wenn die jeweilige OU umgestellt wird in jedes Konto rein gehen, ein Buchstaben bei Verbinden mit hinzufügen, diesen Buchstaben wieder löschen und das ganze mit OK bestätigen ... face-sad
colinardo
Lösung colinardo 04.02.2014, aktualisiert am 06.02.2014 um 10:22:11 Uhr
Goto Top
$users = Get-ADUser -Filter * -SearchBase "OU=Test,DC=TEST,DC=LAN"  

foreach($user in $users){
    Set-ADUser $user -StreetAddress "Teststreet 14" -City "Hamburg" -Department "Test" -PostalCode "52147" -company "TEST" -ProfilePath $null -ScriptPath $null -HomeDrive "P" -HomeDirectory "\\Server\vol2\home\%username%"  
 
    # Ordner anlegen
    $folder = new-item -Path "\\Server\vol2\home\$($user.Samaccountname)" -ItemType Dir -Force  

    # ACL des Ordners holen
    $acl = get-acl $folder.FullName
    
    # Neue Access Rule erstellen und dem Ordner hinzufügen
    $objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($user.UserPrincipalName,"FullControl","ContainerInherit,ObjectInherit","None","Allow")  
    $acl.AddAccessRule($objACE)

    # Besitzer des Ordners setzen
    $acl.SetOwner([System.Security.Principal.NTAccount]"$($user.UserPrincipalName)")  

    # neue ACL des Ordners speichern
    Set-Acl $folder.FullName -AclObject $acl
}
r00t-1337
r00t-1337 04.02.2014 um 16:34:57 Uhr
Goto Top
Danke dir!!!

*Niederknien*

Ich melde mich sobald ich es probiert habe.
r00t-1337
r00t-1337 05.02.2014 um 09:12:42 Uhr
Goto Top
@ colinardo - danke dir dein Skript funktioniert super!

Nur eine Sache bei der Windows-Anmeldung mit einem Test User ist der Ordner angelegt, die ACL korrekt gesetzt, der Pfad im AD-Konto zum Basisordner vorhanden - ABER das Laufwerk wird bei der Anmeldung nicht gemappt.

Hier vll. noch eine Idee?


Danke schonmal!
colinardo
colinardo 05.02.2014 aktualisiert um 09:28:43 Uhr
Goto Top
Ist der Serverpfad \\Server\vol2\home überhaupt freigegeben ?
Dort die Rechte korrekt gesetzt?
Laufen irgendwelche zusätzlichen Anmeldescripte die mit net use * /del vorher alle Mappings entfernen ?
r00t-1337
r00t-1337 05.02.2014 um 09:33:11 Uhr
Goto Top
Sorry ich rudere zurück.

Bei XP wird es nicht verbunden bei Win 7 schon.

Mhh ... seltsam ansonsten ein logonskript einbinden.