Hallo Forum,
das unten angezeigte Script beendet mit Fehler in Zeile 41:
ERRORArray variable has incorrect number of subscripts or subscript dimension range exceeded
$AdUser=$AdUser[1] & "*," & $AdUser[2] & "*"
$AdUser=$AdUser[1] & "*," & ^ in
Was macht das Script?
Liest Datei $file1 ein, in der Userangaben in der Form "Nachname, Vorname" enthalten sind und schreibt diese Angaben
nach Änderung von Umlauten und einem AD-Query in Datei $file3, in der Form "SamAccount;Vorname,Nachname;Department".
Ich habe nun schon viele Beiträge zum Thema "Ubound" gelesen, aber ich habe es noch nicht geschafft, es funktional einzusetzen.
Ein Tipp in die richtige Richtung wäre klasse!
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.2.10.0
Author: Duckbone
Version: 1.0.0
Date: 10.03.2008
Scriptname: ADsearch.au3
Script Function:
Liest Datei $file1 ein, in der Userangaben in der Form "Nachname, Vorname" enthalten sind und schreibt diese Angaben
nach Änderung von Umlauten und einem AD-Query in Datei $file3, in der Form "SamAccount;Vorname,Nachname,Department".
Abhängigkeiten: Benötigt adfind.exe
#ce ----------------------------------------------------------------------------
;includes
#include<String.au3>
#include<Array.au3>
#include <File.au3>
;Pfade
$path="C:\_Automat\"
$file1="UserNachnameVorname.txt"
$file2="Aduser.txt"
$file3="User.txt"
;Start Script
$delfile = FileOpen($path & $file1, 0)
If $delfile = -1 Then
MsgBox(0, "Error", "Unable to open file: "& $path & $file1)
Exit
EndIf
;Umlaute ersetzen
_ReplaceStringInFile($path & $file1,"ä","ae")
_ReplaceStringInFile($path & $file1,"Ä","Ae")
_ReplaceStringInFile($path & $file1,"ö","oe")
_ReplaceStringInFile($path & $file1,"Ö","Oe")
_ReplaceStringInFile($path & $file1,"ü","ue")
_ReplaceStringInFile($path & $file1,"Ü","Ue")
_ReplaceStringInFile($path & $file1,"ß","ss")
While 1
If @error = -1 Then ExitLoop
;Stringoperation
$line = FileReadLine($delfile)
$AdUser=StringSplit($line, ",")
$AdUser=$AdUser[1] & "*," & $AdUser[2] & "*"
If Not FileExists($path & "adfind.exe") Then
MsgBox(0, "Error", "Unable to open file:" & $path & "adfind.exe" )
Exit
Else
RunWait(@ComSpec & " /c " & "adfind -default dc=emea, dc=corpdir, dc=net, cn=*, cn=*, cn=users -f ""&(objectcategory=person)(name=" & $AdUser & ")"" cn sAMAccountName cn department > c:\_automat\AdUser.txt /q", "c:\_automat", @SW_HIDE)
EndIf
$AdUserFile = FileOpen($path & $file2, 0)
If $AdUserFile = -1 Then
MsgBox(0, "Error", "Unable to open file: "& $path & $file2)
Exit
EndIf
;Stringoperation
$line3=FileReadLine($AdUserFile,3)
$cn=_StringBetween($line3, ">cn: ", " (059")
If Not $cn[0] = $line Then
MsgBox(0,"Fehler", $cn[0] & " ist nicht identisch mit: " & $line )
Exit
Else
$line4=FileReadLine($AdUserFile,4)
$Department=StringSplit($line4, " ")
$line5=FileReadLine($AdUserFile,5)
$sam=StringSplit($line5, " ")
FileWriteLine($path & $file3,$sam[2] & ";" & $cn[0] & ";" & $Department[2])
$line = FileReadLine($delfile)
$AdUser=StringSplit($line, ",")
EndIf
WEnd
MsgBox(0,"Meldung", "Job Done!")
Exit
Grüße,
Duckbone