Homeshare & Profilshare automatisch erstellen & freigeben

  • Hallo, ich versuche nun schon eine Weile ein eigentlich simples Problem zu lösen, stehe aber wohl etwas auf'm Schlauch und brauche Hife.


    Ich programmiere ein Tool das mir die tägliche Arbeit in unserer AD erleichtern soll, unter anderem ein Abschnitt der einen neuen Benutzer anlegt und automatisch dessen Home & Profile Ordner erstellen soll.

    Das Problem ist nun, dass ich die Funktion nicht als der angemeldete Benutzer durchführen kann, sondern mit einem höher Berechtigten Benutzer, mit dem ich mich lokal zum normalen arbeiten aber nicht anmelden soll. Etwas lässt sich per cmd regeln, aber nicht so wie ich es brauche. Schöner wäre es mit Autoit Boardmitteln ohne über cmd zu gehen, aber das geht wohl nicht so einfach.

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Outfile=Create_H-P.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit]

    #include <NetShare.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $domadmin = "admin"
    $adminpw = "password"
    $domain = "domain"

    [/autoit] [autoit][/autoit] [autoit]

    $name_first = "Vorname"
    $name_last = "Nachname"
    $country = "GERMANY"

    [/autoit] [autoit][/autoit] [autoit]

    $homeserver = "HOMESERVER"
    If $country = "GERMANY" Then
    $profileserver = "PROFILESERVER01"
    Else
    $profileserver = "PROFILESERVER02"
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $homeshare = "\\" & $homeserver & "\userdir\" & $country & "\" & $name_first & "." & $name_last & ".MyDocs"
    $profileshare = "\\" & $profileserver & "\userdir\" & $country & "\" & $name_first & "." & $name_last

    [/autoit] [autoit][/autoit] [autoit]

    $CMDchf="cmd.exe /k md " & $homeshare
    $CMDcpf="cmd.exe /k md " & $profileshare
    $CMDhacl='cmd.exe /c cacls "' & $homeshare & '" /e /g "' & $name_first & '"."' & $name_last & '":C"'
    $CMDpacl='cmd.exe /c cacls "' & $profileshare & '" /e /g "' & $name_first & '"."' & $name_last & '":C"'

    [/autoit] [autoit][/autoit] [autoit]

    RunAsWait($domadmin, $domain, $adminpw,"",$CMDchf,@TempDir,@SW_SHOW)
    RunAsWait($domadmin, $domain, $adminpw,"",$CMDcpf,@TempDir,@SW_SHOW)
    RunAsWait($domadmin, $domain, $adminpw,"",$CMDhacl,@TempDir,@SW_SHOW)
    RunAsWait($domadmin, $domain, $adminpw,"",$CMDpacl,@TempDir,@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    _Net_Share_ShareAdd($profileserver, $name_first & "." & $name_last & "$",0 , "V:\userdir\" & $country & "\" & $name_first & "." & $name_last)

    [/autoit]

    Der _Net_ShareAdd funktioniert so nicht, da der angemeldete Benutzer keine Rechte dazu hat nur wenn ich das Programm über "ausführen als..." starte. Wobei der Share dann erstellt wird aber keine Berechtigung vergeben wird, der Ordner sollte dann für jeden Berechtigung haben, nur das kann ich irgendwie nicht setzten.

    Was mir nicht gelingt ist eine vorherige Abfrage ob der Ordner & Freigabe denn ggf. schon vorhanden ist um so nicht die Funktion zu durchlaufen.

    Diese Funktion funktioniert selbst bei "ausführen als..." nicht und gibt immer Rückmeldung, dass ein Ordner erstellt wird:

    Spoiler anzeigen
    [autoit]


    If _Net_Share_ShareCheck($profileserver, $name_first & "." & $name_last & "$") = -1 Then
    ; Create a share on the local computer
    ConsoleWrite("Creating Share " & $name_first & "." & $name_last & "$")
    If @error Then MsgBox($MB_SYSTEMMODAL, "Information", "Share add error : " & @error)
    Else
    ConsoleWrite("Share already exists")
    EndIf

    [/autoit]


    Gibt es vielleicht eine ganz andere, bessere Lösung dies zu realisieren?


    Danke schon mal!

  • also ich bin kein admin und hab da keine ahnung was man alles machen kann/darf...aber wie wäre es wenn du eine virtuelle maschine laufen lässt die als admin im netzwerk angemeldet ist und du darin dann dein tool laufen lässt? ich denk das es kein prob ist wenn du dann einfach ein fenster mehr auf deinem desktop hast..

    noob aus erfahrung

  • nein,dass ist auch keine Lösung. Es muss eine "standalone" Lösung sein ohne nochmals andere Programme zu involvieren.

    Das script läuft ja soweit und funktioniert auch, es hat halt noch paar kleine Fehler, wie das ich keine Freigabe erstellen kann per NetShareAdd...