Die Lösung ist: #RequireAdmin in das Skript hinzufügen, da bei mir noch UAC aktiviert ist!
Gruß,
UEZ
Die Lösung ist: #RequireAdmin in das Skript hinzufügen, da bei mir noch UAC aktiviert ist!
Gruß,
UEZ
Super, dass Du ne Lösung hast.
Sehe ich das richtig, dass _AD_Open ohne Fehler läuft und erst bei der Update-Funktion der Fehler auftritt?
Genau! Vielleicht würde es Sinn machen, #RequireAdmin in die AD UDF einzubauen! Vergiss es, funzt so leider nicht!
Ich habe mich zum Enterprise Admin gemacht, ohne Erfolg, bis ich auf den UAC gestoßen bin, als ich die AD Console aufgemacht habe...
Gruß,
UEZ
Genau!
Vielleicht würde es Sinn machen, #RequireAdmin in die AD UDF einzubauen!Vergiss es, funzt so leider nicht!Ich habe mich zum Enterprise Admin gemacht, ohne Erfolg, bis ich auf den UAC gestoßen bin, als ich die AD Console aufgemacht habe...
Gruß,
UEZ
Hätte mich ehrlich gesagt auch gewundert. Denn das hätte ja bedeutet, dass kein anderer der ~1200 Downloader Windows 7 mit irgendeiner Update-Funktion verwendet.
Wo vermutest Du das Problem nun? Im UDF, bei Windows oder in Deinem Script?
Wenn UAC aktiviert ist, sollte man in seinem Skript #RequireAdmin hinzufügen!
Also Windows und das eigene Skript!
Gruß,
UEZ
Dann werde ich einen kurzen Hinweis im UDF einbauen.
Wie kann ich am besten den LoginScriptPath einer User ID löschen?
[autoit]
Func _AD_UserAttribut_DeleteLoginScriptPath($sAD_User)
If _AD_ObjectExists($sAD_User) = 0 Then Return SetError(1, 0, 0)
If StringMid($sAD_User, 3, 1) <> "=" Then $sAD_User = _AD_SamAccountNameToFQDN($sAD_User) ; sAMAccountName provided
Local $oAD_User = _AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_User)
If Not IsObj($oAD_User) Then Return SetError(2, 0, 0)
;~ $oAD_User.Remove($oAD_User.scriptPath)
$oAD_User.Put("scriptPath", "")
$oAD_User.SetInfo
If @error <> 0 Then Return SetError(@error, 0, 0)
Return 1
EndFunc ;==>_AD_RemoveAttribut_ScriptPath
Das funzt leider nicht!
Gruß,
UEZ
Ok, das sollte funzen:
[autoit]
Func _AD_UserAttribut_DeleteLoginScriptPath($sAD_User)
Local Const $ADS_PROPERTY_CLEAR = 1
If _AD_ObjectExists($sAD_User) = 0 Then Return SetError(1, 0, 0)
If StringMid($sAD_User, 3, 1) <> "=" Then $sAD_User = _AD_SamAccountNameToFQDN($sAD_User) ; sAMAccountName provided
Local $oAD_User = _AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_User)
If Not IsObj($oAD_User) Then Return SetError(2, 0, 0)
$oAD_User.PutEx($ADS_PROPERTY_CLEAR, "scriptPath", 0)
$oAD_User.SetInfo
If @error <> 0 Then Return SetError(@error, 0, 0)
Return 1
EndFunc ;==>_AD_RemoveAttribut_ScriptPath
Gruß,
UEZ
Hallo UEZ,
schau mal in die Beschreibung von _AD_ModifyAttribute.
Damit kannst Du Properties ändern, löschen etc.
ich würde auch gerne eine Test AD installieren, was brauche ich dafür alles? Windows Server (2003, 2008) ist klar, gibt es da eine schnelle installation, ohne viel schnickschnack?
Soweit ich mich noch erinnern kann, gibt es für Windows Server 2003 180 Tage Testversionen, für Windows Server 2008 kann man auch die Testversionen bis zu 3x verlängern!
Da ich in einer großen IT Firma arbeite, habe ich das volle Program parat. VMware Workstation v6.5 benutze ich für die Virtualisierung (gab es mal als Promo geschenkt),
kannst aber andere kostenlose Programme dafür einsetzen.
Eine AD hochziehen kannst du ja...
Gruß,
UEZ
ich arbeite auch in einer firma mit ~500 Rechnern, aber eine AD habe ich leider noch nie installiert...
die windows server versionen bekomme ich auch
vmware (virtualbox habe ich lieber) habe ich auch...
die Frage ging rein um die installation des ADs !
Danke schonmal bis hierhin
Eine AD hochziehen ist eigentlich nicht schwer -> dcpromo.
Frage mal Google nach Anleitungen zum Installieren einer AD.
Gruß,
UEZ
Hallo zusammen,
ich versuche, die Pagernummer aus dem AD auszulesen. Leider ist diese Funktion nicht in der Sammlung vorhanden und ich bin nicht in der Lage, diese Information mit meinem Wissen umzusetzen. Folgendes soll passieren:
Die Pagernummer soll aus dem Active Directory (LDAP-Feldname "pager") ausgelesen werden und in einer Box ausgeworfen werden.
Das hört sich simpel an, ich schaffe es aber nicht...
Für Hilfe wäre ich sehr dankbar!
Schwinni
Probiere es mal damit:
[autoit]
#include <AD.au3>
_AD_Open()
MsgBox(0, "Test", _AD_UserAttribute_GetAttribute("Test1", "pager"))
_AD_Close()
Func _AD_UserAttribute_GetAttribute($sAD_User, $attrib)
Local $attrib_val
If _AD_ObjectExists($sAD_User) = 0 Then Return SetError(1, 0, 0)
If StringMid($sAD_User, 3, 1) <> "=" Then $sAD_User = _AD_SamAccountNameToFQDN($sAD_User) ; sAMAccountName provided
Local $oAD_User = _AD_ObjGet("LDAP://" & $sAD_HostServer & "/" & $sAD_User)
If Not IsObj($oAD_User) Then Return SetError(2, 0, 0)
$attrib_val = $oAD_User.Get($attrib)
If @error <> 0 Then Return SetError(@error, 0, 0)
Return $attrib_val
EndFunc ;==>_AD_RemoveAttribut_ScriptPath
Gruß,
UEZ
Hallo UEZ,
vielen Dank für deine schnelle Hilfe! Leider ist der Ausgabewert der Messagebox immer 0.
Gruß
Schwinni
Ich habe in meiner Test Domäne unter Pager einen Wert eingetragen, denn er auch in der MsgBox zeigt.
Gruß,
UEZ
in der sammlung von water gibt es doch schon eine fertige abfrage funktion der einzelnen attribute
müsste _ADGetObjectAttribute sein
Stimmt.
Gruß,
UEZ
Oh man - vielen Dank für den Tipp mit _AD_GetObjectAttribute.au3 - nach 40 Sekunden war mein Problem gelöst. Ich habe diese Funktion immer überlesen.. kurz angepasst und alles läuft wie gewünscht!
Ich danke allen, die mir geholfen haben, das ging wirklich schnell!
Die AD- Integration von AutoIt ist echt genial - bislang keine Probleme aufgetreten (außer meinen hausgemachten)!
Schönes Wochenende
Schwinni