Danke für Deine Hilfe!
LogonDomain ist da dann: MyDomain-test
$sDNSHostName=MyServer.MyDomain.test
Danke für Deine Hilfe!
LogonDomain ist da dann: MyDomain-test
$sDNSHostName=MyServer.MyDomain.test
Folgender Script schlägt bei mir fehl, wenn wenn ich ihn in der Domain MyDomain.test ausführe:
#include <ad.au3>
;°°°°° °°°°° Recognize Domain Enviroment °°°°° °°°°°
_AD_Open()
Global $sComputer = @ComputerName & "$"
Global $sDNSHostName = _AD_GetObjectAttribute($sComputer, "DNSHostName")
_AD_Close()
;°°°°° °°°°° Parse Result °°°°° °°°°°
$Split = StringSplit($sDNSHostName, ".")
$Hostname = $Split[1]
$Domainname = $Split[2]
$Domainsuffix = $Split[3]
RUNWAIT (@COMSPEC & ' /c eventcreate /t information /so MyInstaller /id 100 /l application /d "Detected: Hostname: ' & $Hostname & " Domainname: " & $Domainname & " Domainsuffix: " & $Domainsuffix & ' ..."',"",@SW_HIDE)
;°°°°° °°°°° Check User and Credentials Result °°°°° °°°°°
$iResult = _AD_Open($Domainname & "\x_Service-Account1", "MyPassWord")
$iResult2 = _AD_Open($Domainname & "\y_Service-Account2", "MyPassWord")
MsgBox(4096, "Eins = Erfolg:", $iResult)
MsgBox(4096, "Eins = Erfolg:", $iResult2)
Nehme ich anstelle von der $Domainname variable dann @LogonDomain dann geht es. Diese Variable lautet aber auf MyDomain-Test also ohne Punkt
Gibt es keine Chance, die Usercredentials zu überprüfen, wenn die Domain Namen alles sein können, von MyDomain.com, MyDomain.Local, MyDomain.test, MyOtherDomain.local etc?
Vielleicht gibt es ja eine schlauere Art das ganze anzustellen?
Danke euch, Surfy
Dann klappt es! Danke für den Tip
Leider muss ich den Thread nochmals beleben.
Ein Software Hersteller kam auf die grandiose Idee, den Service mit Sonderzeichen ähnlich "ServiceName.[TET]" zu benennen.
Und diese Bennenung führt dazu, das das Beispiel von UAZ eine leere Messagebox zurückgibt. Weiss jemand auch dazu ein Hilfsmittel?
Die Zeile von Misterspeed funktioniert hier, nach einer kleinen Anpassung:
[autoit]RunWait(@ComSpec & " /c " & 'wmic service get Caption,StartName > ' & @TempDir & '\ServiceUser.txt')
[/autoit]Allerdings würde mir die Lösung von UAZ, ohne Umweg um ein externes File, besser gefallen.
Danke euch,
Surfy
Danke für die rasche Hilfe! Läuft 1a!
Surfy
Hallo zusammen
Ich würde gerne einen String auslesen, und verarbeiten.
[autoit]$MyString="Hostname.MyDomain.com"
[/autoit]Mein Ziel ist es, alles vor dem ersten Punkt, und alles zwischen ersten und zweiten Punkt zu erhalten.
Dh eine Variable $Hostname, und eine Variable $Domainname zu erhalten.
Seht das ganze als Beispiel ich weiss das es @Computername gibt
Danke für eure Hilfe!
Danke Dir water! Ich komme einer Lösung langsam näher.
Es klappt mit deinen Zeilen, wenn ich nur den Domain Namen nehme.
Da es bei uns jedoch auch MyDomain.com und MyDomain.test hat, muss ich mit dem kompletten Domainnamen nehmen - und da klappt es leider nicht mehr Ohne Variablen hingegen schon...
#include <ad.au3>
$domain = "MyDomain"
$User="MyUser"
$iResult = _AD_Open( chr(34) & $domain & "\" & $User & chr(34), "MyPW")
MsgBox(4096, "Eins = Erfolg:", $iResult)
Leider klappt es auch so nicht. Aber doppelt gemoppelt war es schon
Ahh, so langsam fällt der groschen
_AD_Open()
$iResult = _AD_Open("domain\User", "Kennwort")
MsgBox(4096, "Eins = Erfolg:", $iResult)
_AD_Close()
Wie kann ich da jetzt noch Variablen ins Spiel bringen, z.B. so:
_AD_Open()
$iResult = _AD_Open( $domain & "\" & $User , "Kennwort")
MsgBox(4096, "Eins = Erfolg:", $iResult)
_AD_Close()
Variablen scheinen nicht zu gehen Auch Versuche mit Chr(34) - nix
Danke für eure Hilfe
@ water: Danke für den Hinweis zur Fehlermeldung! ich hab dein UDF sogar an anderer Stelle schon im Einsatz, um den DNShostname auszulesen.
_AD_Open()
Global $sComputer = @ComputerName & "$"
Global $sDNSHostName = _AD_GetObjectAttribute($sComputer, "DNSHostName")
_AD_Close()
Trotzdem bin ich auch nach längerem herumprobieren nicht zu einer Lösung gekommen, oder hätte auch nur erahnt, wie ich die gegebenen credentials damit gegenüber einer Domain abfragen könnte. :wacko:
Das muss einem anscheinend in die Wiege gelegt worden sein. Wiki hab ich auch schon durchstöbert - sorry ich bin da einfach zu blond.
Danke UEZ, funktioniert prima! Ich hab sooolang gepröbelt :wacko:
@ Misterspeed: ich hatte die Zeilen erstmal in der DosEingabe Aufforderung ausprobieren wollen, und bin schon da gescheitert,
Danke für den Ansatz! Das kannte ich so noch gar nicht
Leider gibt es bei beiden Zeilen ein Syntax Problem - welches ich nicht lösen kann
Es geht mir darum, dass ich u.a. einen Service unter einem "ServiceUser" laufen lassen soll, in mehreren Domains. Um das umzusetzen muss man das Kennwort wissen. Ziel ist es, gewissen Applikationen die "System" rechte zu nehmen. Dafür werden Serviceuser erstellt, die immer genau dazu die Rechte haben, die unbedingt notwendig sind.
Da es leider immer wieder vorkam - das so ein Script nicht funktionierte, weil der User nicht angelegt war oder das Kennwort nicht entsprechend gesetzt war - würde ich gerne zu begin des Scripts überprüfen - ob der User existiert, ob das PW richtig ist - und wenn etwas nicht stimmt - aus dem Script aussteigen, mit einem passenden Exitcode (und Eventlog Eintrag).
@MK: ich erhalte zweimal den Fehler:
Fehlernummer: 80020009
Beschreibung: A referral was returned from the server.
Ich hoffe ihr wisst rat. So ganz ohne "Errorhandling" gebe ich so ein Script ungern weiter.
Mit Multidomain meinte ich in mehreren Domains unabhängigen Domains, sorry für das Missverständniss.
Wie kann ich denn ein mir bekanntes Kennwort verifzieren?
Wie kann ich überprüfen, unter welchem User ein bestimmter Dienst unter XP läuft?
Theoretisch ist das im Service.msc Manager hinterlegt, aber auch im Taskmanager kann man sehen unter welchem User ein Prozess gestartet ist.
Aber wie ich da via Script rankommen könnte, das ist die gute Frage :pinch:
Dank der ausführlichen Doku zum UDF denke ich dass ich mit dem hier zurande komme:
#include <AD.au3>
; Open Connection to the Active Directory
_AD_Open()
; *****************************************************************************
; Example 1 - Process the current user.
; In the first step get some attributes of the current user.
; In the second step check the user for this attributes.
; *****************************************************************************
; Get some information for the current logged on user we later can test
Global $asProperties[8] = ["sAMAccountName", "cn", "mail", "userPrincipalName", "name", "mailNickname", "displayName", "dNSHostName"]
Global $asObjects[8], $iCount
For $iCount = 0 To UBound($asObjects) - 1
$asObjects[$iCount] = _AD_GetObjectAttribute(@UserName, $asProperties[$iCount])
Next
; Test for the information we gathered above
Global $sOutput = "Get Attributes for User: " & @UserName & @CRLF & @CRLF
For $iCount = 0 To UBound($asObjects) - 1
If _AD_ObjectExists($asObjects[$iCount], $asProperties[$iCount]) Then
$sOutput &= "Object '" & $asObjects[$iCount] & "' for property '" & $asProperties[$iCount] & "' exists" & @CRLF
ElseIf @error = 1 Then
$sOutput &= "Object '" & $asObjects[$iCount] & "' for property '" & $asProperties[$iCount] & "' does not exist" & @CRLF
Else
$sOutput &= "Object '" & $asObjects[$iCount] & "' for property '" & $asProperties[$iCount] & "' is not unique: >=" & @error & " records found" & @CRLF
EndIf
Next
MsgBox(64, "Active Directory Functions", $sOutput)
Ich würde gerne überprüfen, ob ein User in der Domain existiert, und als nächstes ob das bekannte Kennwort auch gesetzt ist.
Es ist eine Multidomainumgebung - und Installationen fallen immer wieder auf die Nase, weil der User nicht angelegt wurde, oder sein Kennwort nicht gesetzt ist.. Da ist jetzt mein Plan, vor der Installation ein paar Eckdaten zu prüfen, und gegebenenfalls auszusteigen.
Wo müsste ich da ansetzen?
Wie kann ich im AD Abfragen, ob ein User existiert?
Mir würde schon etwas ganz simples reichen:
[autoit]
If not $MyUser in Domain then
Exit (44)
EndIF
Leider übersteigt das ActiveDirectory UDF meinen Scriptingskill deutlich
Kann mir jemand unter die Arme greifen?
Danke euch!
Surfy
In dem Verzeichniss, wo das ganze hinkopiert werden soll, befinden sich leider schon Daten..
Weder
[autoit]
FileCopy(@CommonFilesDir & "\Backup\Database\*.*", @ProgramFilesDir & "\Emando\Database\",
noch Dircopy machen da etwas. Es ginge ja darum, lokal noch nicht vorhandenes - zu ergänzen.
Gruss, Etienne
Hallo zusammen
Meine Versuche mit
[autoit]FileCopy(@CommonFilesDir & "\Backup\Database\*.*", @ProgramFilesDir & "\Emando\Database\*.*",
[/autoit][autoit];Dircopy(@CommonFilesDir & "\Backup\Database", @ProgramFilesDir & "\Emando ")
[/autoit]schlugen leider fehl *kopfkratz*
Woran liegt das? Und wie bekomme ich das hin, das überhaupt kopiert wird - und wenn - dann nur die Dateien und Verzeichnisse, die noch nicht existieren?
Danke für eure Hilfe,
Surfy