Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Array auslesen und schreiben

Frage Entwicklung VB for Applications

Mitglied: skid

skid (Level 1) - Jetzt verbinden

12.09.2006, aktualisiert 14.09.2006, 7163 Aufrufe, 9 Kommentare

Hi,

habe ein Problem mit einem Array.

Undzwar soll mein Skript das AD auslesen und Workstations die mit ABC anfangen in ein Array schreiben.
Nachdem das Array gefüllt worden ist soll es bei einem User im AD unter Log On To.. eingefügt werden.

Mein Skript sieht folgendermaßen aus:

01.
 ............... 
02.
 
03.
Const ADS_PROPERTY_APPEND = 3 
04.
 
05.
Set objUser = GetObject(strOU) 
06.
 
07.
Dim ArrWorkstations() 
08.
ReDim ArrWorkstations(0) 
09.
i = 0 
10.
 
11.
Do Until objRecordSet.EOF 
12.
 
13.
i = i + 1 
14.
 
15.
'Computer und Datum in Variable 
16.
 
17.
strComputerName = objRecordSet.Fields("Name") 
18.
strComputerName = Left(strComputerName, 3) 
19.
	 
20.
 
21.
If strComputerName = "NGO" Then 
22.
			 
23.
			 
24.
	Workstations = objRecordSet.Fields("Name") 
25.
End If 
26.
		 
27.
		 
28.
if Ubound(ArrWorkstations) < i then ReDim preserve ArrWorkstations(i) 
29.
 
30.
                ArrWorkstations(i) = Workstations 
31.
 
32.
	objRecordSet.MoveNext 
33.
		 
34.
	 
35.
Loop 
36.
 
37.
 
38.
MsgBox Join(ArrWorkstations, vbNewLine ) 
39.
 
40.
 
41.
objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Array (ArrWorkstations) 
42.
				 
43.
           objUser.SetInfo			 
44.
						 
45.
objConnection.Close
Wenn ich mir mit der MsgBox das Array ausgeben lasse sind alle Workstations drin.

Aber ich schaffe es nicht diese Werte beim User einzutragen.
Es wird immer nur die letzte Workstation aus dem Array eingefügt.

Kann mir jemand sagen wo der Fehler ist ?!


Gruss

SKID

PS: irgendwie klappt das mit dem Formatieren nicht immer
Mitglied: DaSam
12.09.2006 um 23:08 Uhr
Hi,

liegts vielleicht daran, dass man die Workstations KOMMASEPARIERT eintragen muss?

Guckst Du hier: http://www.microsoft.com/technet/scriptcenter/resources/qanda/feb06/hey ...

cu,
Alex
Bitte warten ..
Mitglied: Biber
13.09.2006 um 09:13 Uhr
...oder, anders ausgedrückt:

01.
... 
02.
objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Join( Array (ArrWorkstations),",") 
03.
...
Gruß
Biber
Bitte warten ..
Mitglied: skid
13.09.2006 um 09:36 Uhr
Hi,

der Tip war schon nicht schlecht aber jetzt bekomme ich die Fehlermeldung:

Laufzeitfehler in Microsoft VBScript: Typen unverträglich

Da vielleicht ne idee ?

SKID
Bitte warten ..
Mitglied: Biber
13.09.2006 um 09:43 Uhr
..sorry, war doppelt gemoppelt:
01.
objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Join( ArrWorkstations,",")
immer noch ungetestet, aber Erfolg versprechender...

Gruß
Biber
Bitte warten ..
Mitglied: skid
13.09.2006 um 13:24 Uhr
Tja, und schon die nächste Fehlermeldung:

Active Directory: Unbekannter Fehler

Wenn ich das ganze in dieser Form direkt mitgebe, so als Test, dann geht´s:

01.
objUser.PutEx ADS_PROPERTY_APPEND,"userWorkstations", Array ("WKS1,WKS2") 
02.
objUser.SetInfo
Müsste man evtl. das ArrWorkstations auch in Hochkommas setzen ?

Gruss
SKID
Bitte warten ..
Mitglied: DaSam
13.09.2006 um 15:48 Uhr
Hola,

so könnte es gehen:

01.
objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Array(Join( ArrWorkstations,","))
Bitte warten ..
Mitglied: skid
13.09.2006 um 16:03 Uhr
SUPER

So klappt es jetzt!

Danke an alle Beteiligten - ich war schon am verzweifeln

Gruss
SKID
Bitte warten ..
Mitglied: Biber
13.09.2006 um 17:52 Uhr
Nachtrag: @skid
Ich musste ein bisschen länger draufgucken, aber jetzt verstehe ich es auch.

Der Klemmer ist, dass Du ja das ADS_PROPERTY_APPEND verwendest.
Und zusätzliche Einträge in ein Attribut einträgst, dass auch mehrere aufnehmen kann.

Heißt
a) Du MUSST in diesem Fall ein Array übergeben, auch wenn es nur ein Element gäbe...
[Beispiel: objUser.PutEx ADS_PROPERTY_APPEND "userWorkstations", Array("MeinEinzigerRechner") ]
b) Wenn das so ist, ist Deine Programmmimik oben zu umständlich;
dann könntest Du auch gleich jedesmal den frisch gefundenen Eintrag beim Lesen des aktuellen Satzes/Feldes "Name" anfügen:
[ [Beispiel: objUser.PutEx ADS_PROPERTY_APPEND "userWorkstations", Array(objRecordSet.Fields("Name")) ]

OHNE die Zwischenspeicherung in "Workstations" und "ArrWorkStations" und das ständige "ReDim Preserve".

c) Ist aber alles gar nicht, was Du willst... Du fügst ja immer neue "workstations" an... die bereits vorhandenen bleiben erhalten in der ADS.objUser.userWorkStations-Property.

Führt mich zu Punkt d)....
d) Mein Gedanke mit dem Als-String-Übergeben vorhin war nicht so daneben, aber das Flag ADS_PROPERTY_APPEND muss raus:
d1) objUser.PutEx "userWorkstations", Join( ArrWorkstations,",")
-oder-
d2) objUser.PutEx ADS_PROPERTY_UPDATE, "userWorkstations", Array(Join( ArrWorkstations,",") )
Wenn die gefundenen Workstations tatsächlich die einzigen sind.

Gruß
Biber
Bitte warten ..
Mitglied: skid
14.09.2006 um 09:15 Uhr
Hi Biber,

zuerst hatte ich auch vor direkt beim lesen des ersten Datensatzes den Wert reinzuschreiben.
Habe es Probiert mit:

objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Array (Workstations)

aber so hat er mir immer den letzten Datensatz reingeschrieben - heißt, alle davor wurden überschrieben.

objUser.PutEx ADS_PROPERTY_APPEND, "userWorkstations", Array(objRecordSet.Fields("Name"))

--> führt zu einem Fehler: Active Directory: Mindestens ein Eingabeparameter ist ungültig

Habe dann gelesen das dieses Feld Log On To zwar ein Feld ist wo man mehrere Einträge machen kann aber die Werte in einem reingeschrieben werden müssen.
http://www.wisesoft.co.uk/Articles/Scripting/ActiveDirectoryProgramming ...

Da es aber nicht nur eine Workstation gibt die mit NGO anfangen ist das so schon OK.

Gruss
SKID
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...