Username in Powershell Script für Änderung AD Nutzer
Guten Abend liebe Kolleginnen und Kollegen!
Fangen wir mal direkt an mit den Infos!
Windows Server 2016 + Windows 10 Clients!
Ich möchte gerne per PS Skript einen neuen Homeordner für die User angeben. Soweit so gut, nur kann ich die Variable für den Username ( Ordneranme) nicht mitgeben. Sitze seit Stunden über dem Problem.
$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
foreach($user in $userbase){
$path = “\\DC1\Usershares\$env:username” ( %Username% = wenn man es händisch eintragen würde)
$homedriveLetter = “H:”
Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
}
Vielleicht sehen die " Scripter" unter euch schon was ich vor habe.
Bin für jede Hilfe dankbar
Fangen wir mal direkt an mit den Infos!
Windows Server 2016 + Windows 10 Clients!
Ich möchte gerne per PS Skript einen neuen Homeordner für die User angeben. Soweit so gut, nur kann ich die Variable für den Username ( Ordneranme) nicht mitgeben. Sitze seit Stunden über dem Problem.
$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
foreach($user in $userbase){
$path = “\\DC1\Usershares\$env:username” ( %Username% = wenn man es händisch eintragen würde)
$homedriveLetter = “H:”
Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
}
Vielleicht sehen die " Scripter" unter euch schon was ich vor habe.
Bin für jede Hilfe dankbar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 522218
Url: https://administrator.de/contentid/522218
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
12 Kommentare
Neuester Kommentar
$env:username
Das ist nur der Username des aktuell angemeldeten Users, bzw der der das Skript ausführt.Den SamAccountName des jeweiligen Users musst du aus dem $user Objekt der Foreach-Schleife ableiten
$path = "\\DC1\Usershares\$($user.SamAccountName)"
Moin,
Bitte bei Code die Tags für den Code drumrum schreiben oder links auf </> klicken.
Nun zum Problem:
In $env:username steht der Username des Users, der das Skript ausführt. Das rennt spätestens beim zweiten Schleifendurchlauf gegen die Wand, weil es das Verzeichnis dann ja schon gibt. Und der User, bei dem das klappt, hat dann als Namen seines Homedirs den des Admins, der das gemacht hat. Deshalb so:
hth
Erik
Zitat von @Hendrik2586:
//$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
>
> foreach($user in $userbase){
> $path = “\\DC1\Usershares\$env:username” ( %Username% = wenn man es händisch eintragen würde)
> $homedriveLetter = “H:”
> Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
> }//
Bitte bei Code die Tags für den Code drumrum schreiben oder links auf </> klicken.
Nun zum Problem:
In $env:username steht der Username des Users, der das Skript ausführt. Das rennt spätestens beim zweiten Schleifendurchlauf gegen die Wand, weil es das Verzeichnis dann ja schon gibt. Und der User, bei dem das klappt, hat dann als Namen seines Homedirs den des Admins, der das gemacht hat. Deshalb so:
$path = \\dc1\usershares\$($user.samaccountname)
hth
Erik
Zitat von @Hendrik2586:
In Richtung SamAccountName war ich auch schon weil das ja die einzige Variable ist die dort funktionieren würde. Ich wusste nur nicht wie ich die variabel dort einbinden kann. Oh man eh! X-D
In Richtung SamAccountName war ich auch schon weil das ja die einzige Variable ist die dort funktionieren würde. Ich wusste nur nicht wie ich die variabel dort einbinden kann. Oh man eh! X-D
Einfach mal richtig nachschauen dann siehst du auch alles was die User noch so zu bieten haben ...
Get-ADUser -Filter * -SearchBase "OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local" -Properties * | fl *
Zitat von @Hendrik2586:
$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
foreach($user in $userbase){
$path = “\\DC1\Usershares\$env:username” ( %Username% = wenn man es händisch eintragen würde)
$homedriveLetter = “H:”
Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
}
$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
foreach($user in $userbase){
$path = “\\DC1\Usershares\$env:username” ( %Username% = wenn man es händisch eintragen würde)
$homedriveLetter = “H:”
Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
}
Na, wenn wir schon dabei sind: Kein Grund, $homedriveLetter bei jedem Durchlauf mit dem selben Wert zu überschreiben, oder?
$userbase = Get-ADUser -Filter * -SearchBase “OU=Test,OU=Users,OU=MyBusiness,DC=intern,DC=bbb,DC=local"
$homedriveLetter = “H:”
foreach ($user in $userbase) {
$path = \\dc1\usershares\$($user.samaccountname)
Set-ADUser -Identity $user -HomeDirectory $path -HomeDrive $homedriveLetter
}
Vielleicht möchtest du im Zuge der Ausführung auch gleich die korrekte ACL auf das Homedir setzen, sodass nur der Benutzer selbst das Verzeichnis lesen (und schreiben) kann?
Moin,
Guckst Du hier: PowerShell Script ACL entfernen und setzen
hth
Erik
Zitat von @Hendrik2586:
Der Code dazu wäre sicher nicht schlecht, geht aber über meine Erfahrungen und Kenntnisse mit PS weit hinaus. Das würde ich dann doch über den Windows Server Manager machen.
Vielleicht möchtest du im Zuge der Ausführung auch gleich die korrekte ACL auf das Homedir setzen, sodass nur der Benutzer selbst das Verzeichnis lesen (und schreiben) kann?
Der Code dazu wäre sicher nicht schlecht, geht aber über meine Erfahrungen und Kenntnisse mit PS weit hinaus. Das würde ich dann doch über den Windows Server Manager machen.
Guckst Du hier: PowerShell Script ACL entfernen und setzen
hth
Erik
Moin,
Dann hat das also geklappt.
Das ist so.
Hast Du denn das LW H: gemappt? Nur weil Du es dem User in die Umgebungsvariablen schreibst, mappt der Client noch nicht das LW. Das musst Du schon auch machen.
hth
Erik
Zitat von @Hendrik2586:
Was ich nun vermisse ist etwas das ich wahrscheinlich falsch verstanden habe. Nun sehe ich wenn ich ein Comman Fenster öffne oder PS und set eingebe, das der Homepath und Letter angepasst wurden.
Was ich nun vermisse ist etwas das ich wahrscheinlich falsch verstanden habe. Nun sehe ich wenn ich ein Comman Fenster öffne oder PS und set eingebe, das der Homepath und Letter angepasst wurden.
Dann hat das also geklappt.
Jedoch sehe ich das er wenn ich das command Fenster öffne auf C zugreift
Das ist so.
und nicht auf H. Auch sehe ich kein gemapptes Laufwerk H auf dem die User dann ihre Daten sehen.
Hast Du denn das LW H: gemappt? Nur weil Du es dem User in die Umgebungsvariablen schreibst, mappt der Client noch nicht das LW. Das musst Du schon auch machen.
hth
Erik
Zitat von @erikro:
Hast Du denn das LW H: gemappt? Nur weil Du es dem User in die Umgebungsvariablen schreibst, mappt der Client noch nicht das LW. Das musst Du schon auch machen.
Hast Du denn das LW H: gemappt? Nur weil Du es dem User in die Umgebungsvariablen schreibst, mappt der Client noch nicht das LW. Das musst Du schon auch machen.
Am besten per GPO für alle Nutzer ausrollen:
User Configuration -> Preferences -> Windows Settings -> Drive Maps
Action: Update
Location: \\dc1\usershares\%USERNAME%
Label as: %USERNAME% / oder Label as: Home Drive
Use: H
Fertig.