Jump to content

Homeverzeichnis für User Erstellen Powershell


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi Leute, ich erläutere euch mal mein Problem.

 

Ich suchte nach einem Powershell Script was ich wiederum als LogonScript auf meinem WindowsServer 2016 einbinden wollte.
Das heisst wenn sich Jemand mit egal welchem User anmeldet ob am Server oder an einem der beiden Clients die auch in der Domäne sind das sie Automatisch ein eigenes Homeverzeichnis bekommen.

Das Script sieht wie folgt aus:

param([Parameter(Mandatory=$true)][String]$samAccountName)
$fullPath = \\DC01\HomeDir2\{0}“ -f $samAccountName 
$driveLetter = H:“

$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)
}

 

Wenn ich es mit der Powershell öffne also er es ausführt kommt direkt eine Fehlermeldung die sieht man nicht weil sich die PS Console direkt schließt, deswegen habe ich das Script mal per STRG+V in eine geöffnete Console eingefügt 
Da läuft es dann zwar er legt das Verzeichnis also Das Homeverzeichnis auch an aber er fragt den SAMACCOUNTNAME ab also den muss ich dann Manuell in die Console eingeben. genau deswegen funktioniert das als Logon Script nicht.

Die Frage ist wie mache ich das das er einfach den eingeloggten User erkennt und für den dann das Homeverzeichnis anlegt?

PS: Ich weiss ich weiss ich kann das auch Manuell alles anlegen aber das will ich nicht und das ist auch nicht meine Aufgabe es muss so gehen.

thx:)

scree.png

Link zu diesem Kommentar

Moin,

 

was genau möchtest du denn erreichen? Dass jeder User ein Homeverzeichnis hat? Das ließe sich wahrscheinlich einfacher erreichen. Allgemein würde man sowas eher zentral erzeugen (z.B. in dem Moment, wenn der User im AD angelegt wird; oder auch einmalig für alle bestehenden Userkonten) als es beim Anmelden eines Users zu tun - nicht zuletzt könnte man damit Berechtigungsprobleme vermeiden.

 

Also beschreibe doch bitte noch mal genau die Aufgabe und das Ziel.

 

Gruß, Nils

 

Link zu diesem Kommentar
vor 13 Minuten schrieb NilsK:

Moin,

 

was genau möchtest du denn erreichen? Dass jeder User ein Homeverzeichnis hat? Das ließe sich wahrscheinlich einfacher erreichen. Allgemein würde man sowas eher zentral erzeugen (z.B. in dem Moment, wenn der User im AD angelegt wird; oder auch einmalig für alle bestehenden Userkonten) als es beim Anmelden eines Users zu tun - nicht zuletzt könnte man damit Berechtigungsprobleme vermeiden.

 

Also beschreibe doch bitte noch mal genau die Aufgabe und das Ziel.

 

Gruß, Nils

 

Also ich möchte keine neuen User dafür anlegen lassen.

-Bestehende User die sich am Client oder Lokal am Server anmelden oder Einloggen sollen automatisch per Logon Script EIn Homelaufwerk zugewiesen bekommen 
-in dem Moment, wenn der User im AD angelegt wird ein Homeverzeichnis zugewiesen bekommen das währe auch gut wenn du weisst wie?^^ , aber es soll über ein Script laufen weil das so meine Aufgabe ist.

Ich hoffe nun ist es besser erklärt

Gruß Patrick

Link zu diesem Kommentar

Moin,

 

also hast du eine exakte Aufgabe gestellt bekommen? Wie lautet die denn? Sonst raten wir hier nur rum und es passt am Ende nicht.

 

Beim Anlegen eines Users über das GUI kannst du direkt ein Home erzeugen lassen. Beim Anlegen per PowerShell gibst du halt in dem Skript, mit dem du den User erzeugst, auch das Kommando, den Ordner zu erzeugen, den Namen dafür hast du in dem Fall ja. Und wenn es darum geht, für bestehende User ein Home zu erzeugen, dann liest man die User aus und lässt in einer Schleife die Ordner anlegen.

 

Dein Skript schlägt deshalb fehl, weil es in der ersten Zeile erwartet, einen Parameter übergeben zu bekommen. Daher stellt die PowerShell beim manuellen Ausführen auch die Nachfrage. Du müsstest diese Stelle ersetzen durch eine Funktion, die den Anmeldenamen des Users zurückgibt, der das Skript aufruft. Dafür käme z.B, die Systemvariable %USERNAME% in Frage.

Noch dazu hast du das Skript offenbar von einer Webseite kopiert, weshalb falsche Anführungsstriche darin stehen. Tippe alle Anführungsstriche in einem Texteditor neu.

 

Gruß, Nils

 

 

bearbeitet von NilsK
Link zu diesem Kommentar
vor 18 Minuten schrieb NilsK:

Moin,

 

also hast du eine exakte Aufgabe gestellt bekommen? Wie lautet die denn? Sonst raten wir hier nur rum und es passt am Ende nicht.

 

Beim Anlegen eines Users über das GUI kannst du direkt ein Home erzeugen lassen. Beim Anlegen per PowerShell gibst du halt in dem Skript, mit dem du den User erzeugst, auch das Kommando, den Ordner zu erzeugen, den Namen dafür hast du in dem Fall ja. Und wenn es darum geht, für bestehende User ein Home zu erzeugen, dann liest man die User aus und lässt in einer Schleife die Ordner anlegen.

 

Dein Skript schlägt deshalb fehl, weil es in der ersten Zeile erwartet, einen Parameter übergeben zu bekommen. Daher stellt die PowerShell beim manuellen Ausführen auch die Nachfrage. Du müsstest diese Stelle ersetzen durch eine Funktion, die den Anmeldenamen des Users zurückgibt, der das Skript aufruft. Dafür käme z.B, die Systemvariable %USERNAME% in Frage.

Noch dazu hast du das Skript offenbar von einer Webseite kopiert, weshalb falsche Anführungsstriche darin stehen. Tippe alle Anführungsstriche in einem Texteditor neu.

 

Gruß, Nils

 

 

Moin,

 

Die Aufgabe Lautet per GPO(Gruppenrichtlinie) ein LogonScript laufen zu lassen das bewirkt das jeder ein Homeverzeichnis bekommt.
Z.B ich melde mich nur mit dem Admin Konto an bekommt der erst ein Homelaufwerk, melde ich mich mit HansDieter an bekommt er sein Homelaufwerk über das LogonScript zugewiesen,

Ja das nervige bei dem Script was ich am anfang gepostet hab was ich auch ausm Netz habe ist das ich das Homeverzeichnis vorher einmal selber anlegen musste das soll das Script auch alleine machen am besten.
Und ja anstatt das er händisch einen Namen abfragt für welchen SamAccountName er ein HomeLaufwerk erzeugen soll, soll er lieber selber deinen eingeloggten Account erkennen und anhand dessen das HomeLaufwerk anlegen.( Und dann muss ich  wissen wie man das macht denn ich bin zu b***d was passendes dafür im netz zu finden^^ um mir das Script selbst zusammen zu schustern deswegen währe es nett wenn du einen Lösungsweg weisst mir das Script neu editiert nochmal zu Posten und wenn möglich mit ner kleinen erklärung)
Ja das mit der variable %username% leuchtete mir auch ein nur da ich nicht das nötige wissen habe das umzuschustern bräuchte ich geignete hilfe der mir sagt oder zeigt wie am besten so genau wie möglich
Ich hoffe es ist nun noch etwas verständlicher. Sorry das es etwas kompliziert meinerseits ist

Gruß Patrick

bearbeitet von otonashi
Link zu diesem Kommentar

Erstell eine Batchdatei mit folgendem Inhalt:

 


net use h: \\DeinServer\DeineFreigabe\%USERNAME% /persistent:no

 

Die Batchdatei dann jedem User als Anmeldescript mitgeben.

 

EDIT: Den zweiten Teil deiner Frage habe ich jetzt erst gelesen. Mit einer IF-Abfrage kommst Du dorthin. Beispiele gibt es viele:

https://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-kommandos?id=if

 

Im zweiten Posting findest Du eine passende Abfrage:

https://www.tutorials.de/threads/batch-ueberpruefen-ob-im-ordner-dateien-vorhanden-sind.192232/

bearbeitet von Sunny61
Link zu diesem Kommentar

Moin,

 

vor einer Stunde schrieb otonashi:

Die Aufgabe Lautet per GPO(Gruppenrichtlinie) ein LogonScript laufen zu lassen das bewirkt das jeder ein Homeverzeichnis bekommt.
Z.B ich melde mich nur mit dem Admin Konto an bekommt der erst ein Homelaufwerk, melde ich mich mit HansDieter an bekommt er sein Homelaufwerk über das LogonScript zugewiesen,

und das bedeutet, dass das Homeverzeichnis erzeugt werden soll? Das wäre sehr untypisch, denn schließlich muss das nur genau einmal erzeugt werden. Üblicherweise wird in einem Logonscript ein bestehendes Homeverzeichnis verbunden - das ist eine ganz andere Aufgabe und viel einfacher. Solltest du vielleicht noch mal klären.

 

Zitat

deswegen währe es nett wenn du einen Lösungsweg weisst mir das Script neu editiert nochmal zu Posten und wenn möglich mit ner kleinen erklärung

Nein, sorry, aber fertige Scripte schreiben wir hier normalerweise nicht. Das wäre auch wenig zielführend, wenn wir dir deine Aufgaben erledigen, dann hast du nichts gelernt und jemand anders deine Aufgabe erledigt.

 

Gruß, Nils

 

Link zu diesem Kommentar
vor 12 Minuten schrieb NilsK:

Moin,

 

und das bedeutet, dass das Homeverzeichnis erzeugt werden soll? Das wäre sehr untypisch, denn schließlich muss das nur genau einmal erzeugt werden. Üblicherweise wird in einem Logonscript ein bestehendes Homeverzeichnis verbunden - das ist eine ganz andere Aufgabe und viel einfacher. Solltest du vielleicht noch mal klären.

 

Nein, sorry, aber fertige Scripte schreiben wir hier normalerweise nicht. Das wäre auch wenig zielführend, wenn wir dir deine Aufgaben erledigen, dann hast du nichts gelernt und jemand anders deine Aufgabe erledigt.

 

Gruß, Nils

 

Ja das Homeverzeichnis soll auch nur einmal erzeugt werden aber dann muss ja die Freigabe oder so für jeden User der sich einloggt dazu erzeugt werden auf dem Arbeitsplatz speziell für den eingeloggten User. Deswegen wie könnte ich das am besten in meinem Jetzigen Script mit der Variable %Username% erreichen? könntest du mir da einen Tipp geben.
Nein du sollst ja nicht alle Zeilen für mich vorschreiben das Meiste habe ich ja schon in dem oben angegebenen Script

Gruß Patrick

 

vor 16 Minuten schrieb Sunny61:

Erstell eine Batchdatei mit folgendem Inhalt:

 


net use h: \\DeinServer\DeineFreigabe\%USERNAME% /persistent:no

 

Die Batchdatei dann jedem User als Anmeldescript mitgeben.

 

EDIT: Den zweiten Teil deiner Frage habe ich jetzt erst gelesen. Mit einer IF-Abfrage kommst Du dorthin. Beispiele gibt es viele:

https://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-kommandos?id=if

 

Im zweiten Posting findest Du eine passende Abfrage:

https://www.tutorials.de/threads/batch-ueberpruefen-ob-im-ordner-dateien-vorhanden-sind.192232/

Auch danke für deine Antwort aber mit der batch datei das lief irgendwie nicht bei mir deswegen wollte ich das lieber über Powershell machen. Die If anfrage das schau ich mir für powershell mal an

Link zu diesem Kommentar
vor 9 Minuten schrieb otonashi:

Ja das Homeverzeichnis soll auch nur einmal erzeugt werden aber dann muss ja die Freigabe oder so...

Sorry, aber das klingt alles etwas verworren. Von wem hast Du denn so eine Aufgabe bekommen?

Normalerweise wird das Homeverzeichnis und die dazugehörige Freigabe nur einmal - EIN EINZIGES MAL - erzeugt. Das Verbinden des Benutzers mit dieser Freigabe und Zuweisung eines Laufwerksbuchstabens geschieht mittels GPOs - da brauchst Du auch kein Script. Wir haben 2018! - Logonscripte sind kaum noch notwendig.

Link zu diesem Kommentar
vor 17 Minuten schrieb BOfH_666:

Sorry, aber das klingt alles etwas verworren. Von wem hast Du denn so eine Aufgabe bekommen?

Normalerweise wird das Homeverzeichnis und die dazugehörige Freigabe nur einmal - EIN EINZIGES MAL - erzeugt. Das Verbinden des Benutzers mit dieser Freigabe und Zuweisung eines Laufwerksbuchstabens geschieht mittels GPOs - da brauchst Du auch kein Script. Wir haben 2018! - Logonscripte sind kaum noch notwendig.

Schon klar das keine notwendig sind ohne logon script läuft es ja auch aber mein chef in der Ausbildung wollte das ich das mit mache das automatisiert jeder user der angelegt wird automatisch ein homelaufwerk zugewiesen bekommt und das per script. Ist ja letzenendes auch egal ich soll es so machen einfach für den Lernefekt

bearbeitet von otonashi
Link zu diesem Kommentar
vor 7 Minuten schrieb otonashi:

... einfach für den Lernefekt

Dann fang doch vielleicht mit den Grundlagen von Powershell an. Dann verstehst Du auch, warum das Script so reagiert, wie es das tut und Du lernst, wie Du das debuggen kannst, bzw. wie Du es verändern musst, um das von Dir gewünschte Verhalten zu erhalten. Und Du lernst auch das integrierte Hilfe-System zu benutzen usw. ....

Ein guter und sogar einigermaßen unterhaltsamer Start gelingt relativ einfach mit dem kostenlosen Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell. (Keine Ahngst - es geht dort eigentlich um Powershell 3 aber die Grundlagen haben sich nicht geändert.)

Link zu diesem Kommentar
vor 20 Minuten schrieb BOfH_666:

Dann fang doch vielleicht mit den Grundlagen von Powershell an. Dann verstehst Du auch, warum das Script so reagiert, wie es das tut und Du lernst, wie Du das debuggen kannst, bzw. wie Du es verändern musst, um das von Dir gewünschte Verhalten zu erhalten. Und Du lernst auch das integrierte Hilfe-System zu benutzen usw. ....

Ein guter und sogar einigermaßen unterhaltsamer Start gelingt relativ einfach mit dem kostenlosen Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell. (Keine Ahngst - es geht dort eigentlich um Powershell 3 aber die Grundlagen haben sich nicht geändert.)

Ich schau mir das gleich mal zuhause an, nur das ding ist ich habe schon in google nach dingen gesucht wie: Variable %username% powershell und ähnliche formulierungen aber ich fand da ist schwer was zu finden,

Link zu diesem Kommentar

Moin,

 

vor 35 Minuten schrieb otonashi:

das automatisiert jeder user der angelegt wird automatisch ein homelaufwerk zugewiesen bekommt und das per script

das ist ja genau das, was ich meine: Erzeugen des Ordners genau einmal in dem Moment, in dem der User neu angelegt wird (Skript 1). Verbinden des existierenden Ordners beim Logon des Benutzers (Skript 2). Das kann man durchaus per PowerShell machen, aber wenn man sich damit nicht auskennt, ist Batch einfacher.

 

Skript 1:

  • Angabe des Usernamens und ggf. weiterer Details
  • Erzeugen des Users im AD (PS: New-ADUser, Batch: net user oder dsadd user)
  • Erzeugen des Home-Ordners in einer bestehenden Freigabe, ggf. mit Berechtigungen

Skript 2:

  • Verbinden des Homes mit der Angabe der übergeordneten Freigabe und der Systemvariable %username%, ist per PowerShell und Batch ähnlich einfach; Beispiele wirst du im Web viele finden

Gruß, Nils

PS. es wäre nett, wenn du auf Lesbarkeit deiner Beiträge achtest und grundlegende Zeichensetzung und Groß- und Kleinschreibung einsetzt.

Link zu diesem Kommentar
vor einer Stunde schrieb otonashi:

Auch danke für deine Antwort aber mit der batch datei das lief irgendwie nicht bei mir deswegen wollte ich das lieber über Powershell machen. Die If anfrage das schau ich mir für powershell mal an

Ich glaube eher, dein Chef verlangt nach Powershell. Es wäre besser gewesen wenn Du gleich von Anfang ehrlich mit allen hier umgegangen wärst.

 

Wenn man ein PS-Script debuggen möchte, dann nimmt man dafür die Powershell ISE her, mit F9 kann man einen Haltepunkt setzen, mit F5 das Script starten, mit F11 schrittweise durch das Script gehen. Solche grundsätzlichen Dinge muss dir dein Ausbilder zeigen, dann die Aufgaben geben.

 

Mit der Antwort lief irgendwie nicht, kann hier niemand etwas anfangen. Fehlermeldungen posten, alles andere ist Kaffeesatzleserei.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...