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
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile=Create_H-P.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <NetShare.au3>
[/autoit] [autoit][/autoit] [autoit]$domadmin = "admin"
$adminpw = "password"
$domain = "domain"
$name_first = "Vorname"
$name_last = "Nachname"
$country = "GERMANY"
$homeserver = "HOMESERVER"
If $country = "GERMANY" Then
$profileserver = "PROFILESERVER01"
Else
$profileserver = "PROFILESERVER02"
EndIf
$homeshare = "\\" & $homeserver & "\userdir\" & $country & "\" & $name_first & "." & $name_last & ".MyDocs"
$profileshare = "\\" & $profileserver & "\userdir\" & $country & "\" & $name_first & "." & $name_last
$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"'
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)
_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
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
Gibt es vielleicht eine ganz andere, bessere Lösung dies zu realisieren?
Danke schon mal!