meisterfuchs
Goto Top

Automatisch erstellen von Ordner

Hallo liebe Gemeinde...
Ich habe ein Problem

Ich habe mit Windows Server 2008 R2 eine Domain erstellt. Bis jetzt bin ich auch soweit fast fertig, ich habe alles soweit hinzugefügt, alle meine Programme.

Und jetzt zu mein Problem
Ich suche nach einem Script was automatisch einen Ordner hinzugefügt wenn ein neuer Benutzer erstellt wird.
Der Ordner muss genauso heißen wie der Benutzer.
Da ich die Benutzer über ein externes Programm erstelle,
Muss das Skript den Ordner Abgleichen wo alle benutzer ordner drin sind.
Und den neuen ordner erstellen..


Ist vielleicht schwer zu verstehen
Aber ich hoffe ihr könnt mir helfen

Mit freundlichen Grüßen
MeisterFuchs

Content-ID: 340833

Url: https://administrator.de/contentid/340833

Ausgedruckt am: 26.11.2024 um 02:11 Uhr

133417
Lösung 133417 16.06.2017 aktualisiert um 20:09:16 Uhr
Goto Top
Powershell
Import-Module ActiveDirectory
$root = "\\Server\freigabe\oberordner"  
$users = Get-AdUser -Filter * | select -Expand Name
$folders = gci $root| ?{$_.PSIscontainer} | select -Expand Name
Compare $folders $users -Passthru | ?{$_.Sideindicator -eq '=>'} | %{md "$root\$_" -Force}  
Gruß
MeisterFuchs
MeisterFuchs 16.06.2017 um 18:45:24 Uhr
Goto Top
Wie Funktioniert das Script genau
Und was macht es ?
133417
133417 16.06.2017 aktualisiert um 18:53:01 Uhr
Goto Top
Es holt sich alle Benutzernamen aus dem AD, holt sich alle Ordnernamen aus einem Ordner, vergleicht diese Listen miteinander und erstellt nur die noch fehlenden Ordner.
Fertig.

Mit dem zur Seite legen der Doku hätte man es sich eigentlich auch selbst erlesen können face-wink. Aber zum Lesen scheinen hier ja die meisten leider nicht fähig zu sein ...
MeisterFuchs
MeisterFuchs 16.06.2017 um 19:07:17 Uhr
Goto Top
Also ich glaube ich versteh den Ansatz schon
Ich wollte es gerade mal ausprobieren.. und ich bekomme eine Fehlermeldung..

img-20170616-wa0057
133417
133417 16.06.2017 aktualisiert um 20:07:06 Uhr
Goto Top
Dann existieren bestimmt noch keine Unterordner, denn ansonsten läuft das hier.
MeisterFuchs
MeisterFuchs 16.06.2017 um 20:22:52 Uhr
Goto Top
Gut Danke dir face-smile
Vielen Dank du hast mir sehr weiter geholfen...

eins hätte ich noch
da er meist nur einen neuen ordner erstellt wäre es gut wenn er den namen des neunen Ordners
in eine variable legt
zb.: New ordner
Damit ich noch mehr im Programm machen kann
Das wäre toll wenn das noch ginge
133417
Lösung 133417 16.06.2017 aktualisiert um 20:29:12 Uhr
Goto Top
Klar kein Problem einfach das Ergebnis des Compare als Variable speichern
$result = Compare $folders $users -Passthru | ?{$_.Sideindicator -eq '=>'}  
Je nach Anzahl ist es entweder ein "String" oder eben ein "Array aus Strings", das solltest du also im Hinterkopf behalten. Also immer mit Schleifen arbeiten.
MeisterFuchs
MeisterFuchs 17.06.2017 aktualisiert um 14:18:16 Uhr
Goto Top
Vielen Dank
klappt einwandfrei
Powershell ist für mich noch neuland und muss mich erst reinfuchsen :D deswegen auch mein Name :D

Ich will dich ja nicht nerven aber ich probiere seit gestern abend das Skript noch zu erweitern aber iwie klappt das nicht
Ich versuche ntsf rechte zu vergeben
er fügt den namen des Users der einen neuen Ordner hinzu aber er hat keine rechte... sonder wird nur in der Registerkarte des Ordners angezeigt
zb.: User-> Max hat den Ordner Max bekommen nun soll User Max Auch vollen zugriff haben.....

und wenn er das macht zeigt der jeden ### an :D
das ist doof weil ich vorhatte die ausgaben mit write-Host anzeigen zu lassen :D


soweit bin ich bis jetzt
Import-Module ActiveDirectory 
write-Host "Der Benutzer ordner wird Durchsucht"  
write-Host "fehlende Benutzerordner werden Automatisch Hinzugefügt"  
While($True) {
    $result = ""  

    $root = "D:\Benutzer"   
    $users = Get-AdUser -Filter * -Searchbase „OU=Netzwerk_Benutzer,DC=springer,DC=home“ | select -Expand samAccountName 
    $folders = gci $root| ?{$_.PSIscontainer} | select -Expand Name 
    Compare $folders $users -Passthru | ?{$_.Sideindicator -eq '=>'} | %{md "$root\$_" -Force}  
    $result = Compare $folders $users -Passthru | ?{$_.Sideindicator -eq '=>'}  
    if($result){
	write-Host " "  
	write-Host "Der Ordner $result für den Benutzer $result wurde hinzugfügt"  
		}

     if($result){
	$DIR = "D:\Benutzer\"+$result  
	$BENUTZER = "$result"  
	$ACL = Get-Acl $DIR
	$acl | format-list
	$Rights = [System.Security.AccessControl.FileSystemRights] "ReadData, ReadExtendedAttributes, ReadAttributes, ReadPermissions"  
	$Access=[System.Security.AccessControl.AccessControlType]::Allow
	$Inherit=[System.Security.AccessControl.InheritanceFlags]::ContainerInherit ` -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
	$Prop=[System.Security.AccessControl.PropagationFlags]::InheritOnly
	$AccessRule = new-object System.Security.AccessControl.FileSystemAccessRule ` ($BENUTZER,$Rights,$Inherit,$Prop,$Access)
	$ACL.AddAccessRule($AccessRule)
	set-acl -AclObject $ACL -Path $DIR
        $ACL = Get-Acl $DIR
        "ACL nachher:"  
        $acl | format-list
	    }
	
	
	Start-Sleep -Seconds 10
    }
133417
133417 17.06.2017 aktualisiert um 19:26:29 Uhr
Goto Top
Aua, da bekommt man ja Augenkrebs...

War doch alles schon da, das brauchen wir hier jetzt nicht zum xten mal diskutieren.

Hinsetzen, lesen, lernen, umsetzen...und Suchfunktion von Administrator.de benutzen:
Kann man per Powershell Benutzer-Ordner aus vorhandenen AD Konten erzeugen?

und wenn er das macht zeigt der jeden ### an :D
Hää, wie meinen?? Meine Exkremente verteile, ich zumindest, nicht auf meinem Bildschirm. Was du damit bezweckst will ich mir gar nicht vorstellen face-wink.

Deinen Powershell-Copy n Paste müssen wir uns hier ja jetzt nicht unbedingt hingeben ...

Gruß