Wie wäre es mit diesem UDF ?
Beiträge von water
-
-
Danke für das Feedback. Wie bei jedem UDF würde ich auf der einen Seite die Komplexität reduzieren und auf der anderen Seite natürlich Möglichkeiten einschränken und etwas Performance verlieren. Bevor ich mir aber die Arbeit "antue" um ein Konzept für die UDF zu entwickeln, will ich erst mal ein Feedback bekommen, ob das UDF von irgendjemandem gebraucht wird. Falls nicht, lasse ich das ganze und stürze mich direkt auf die Objekte.
Falls ich das UDF angehe, nehme ich dein Angebot bezüglich Zuarbeit gerne an.
Gruß vom Bodensee -
Poste mal nen Screenshot von dem Fenster.
-
Ich denke daran eine UDF für Excel Grafiken zu erstellen.
Sie wird aus einer einzelnen Funktion bestehen um die Grafik zu erstellen (Angaben: Datenbereich, Typ der Grafik, Titel, Position etc.) und vielen Funktionen um einzelne Aspekte der Grafik anzupassen.Was haltet Ihr von der Idee? Braucht das jemand?
-
Wirf mal einen Blick ins engl. Forum. Z.B. hier
-
Schau Dir hier die Zeile 1 an. In der Variablen $iResult steht der Rückgabewert von PSEXEC.
-
Stimmt so nicht!
Zitataber...nur so: bei shellexecute kommt doch dann 1 raus ...
Er hat aber nicht den Returncode von Shellexecute abgefragt (der ist 1 bei Erfolg) sondern auf @error getestet.
Sein Problem war, dass er glaubte mit @error den Fehler von PSEXEC zu prüfen, tatsächlich aber Shellexecute prüft. -
Mit @error fragst Du ab, ob ShellExecute ein Problem hatte. Du möchtest aber wissen, ob PSEXEC erfolgreich lief. Wenn Du Glück hast, gibt PSEXEC dies über einen Returncode zurück. Den fragst Du so ab (wobei ich davon ausgehe, dass PSEXEC Retruncode 0 für "Alles OK" verwendet):
[autoit]$iResult = ShellExecuteWait("c:\psexec\psexec", "\\192.168.10.1 c:\Install\test.cmd -u domaene\Admin -p Password -n 10", "", "");, @SW_HIDE)
[/autoit]
If $iResult <> 0 Then
MsgBox(16, "Fehler !", "Es konnte keine Verbindung zum Server aufgebaut werden")
Else
$iResponse_Y = MsgBox(64, "Erfolgreich", "Der Dienst wurde neu gestartet")
If $iResponse_Y = 1 Then Exit
EndIf -
Guckst Du _ExcelReadCell und GUICtrlSetData.
Ein ganz anderer Ansatz ist Excel wirklich wie eine Datenbank zu nutzen. D.h. Zugriff über ADO und ausführen von SQL statements.
Beispiel oder noch ein Beispiel . -
Mit veraltet meine ich alle Computer, die nicht mehr als Computer existieren, d.h. die vor der Formatierung nicht aus dem AD geschmissen wurden.
Das kannst Du entweder mit der Invantardatenbank abgleichen (irgendjemand wird das Ding hoffentlich ausgebucht haben) oder alle PCs über einen längeren Zeitraum anpingen oder im Login-Skript die IP Adresse speichern oder oder oder
-
Sag' mir, was Du unter "veraltet" verstehts und ich sage Dir, ob es mit meinem Active Directory UDF lösbar ist.
-
Du hast in der "SysTabControl32" zwei Möglichkeiten:
- Mit Strg+Tab zum nächsten Tab wechseln
- Mit Funktion "ControlCommand" und dem Command "TabRight" etc. das Control steuern (Siehe Help File)
HTH
Water -
Aber das kannst Du doch mit einem einmalig durchgeführten Script erledigen.
Hol Dir eine Liste aller Computer im AD (_AD_GetObjectsInOU), frag dann per NSLookup die IP-Adresse ab und verschiebe die falschen mit _AD_MoveObject. -
-
Wieso willst Du das auf alle PCs ausrollen und warum soll das jeder user aufrufen können?
Die Einrichtung von PCs und die Aufnahme in die Domäne wird von unserer Client-Truppe erledigt und da geht das alles automatisch.
Ansonsten würde ich über ein kleines GUI die Credentials abfragen. -
Nee. Es genügt, wenn der User, dessen Credentials du übergiebst (oder der Windows User, wenn Du keine übergiebst) die notwendigen Rechte hat um einen Computer in eine andere OU zu verschieben.
-
Es ist ganz einfach (sobald man weiss wie's geht):
- _AD_CreateComputer: Legt ein Computer Konto im AD an und vergiebt Rechte auf das Konto. U.a. wird mit Parameter 3 definiert, welcher User bzw. welche Gruppe einen Computer mit diesem Konto verknüpfen darf.
Um _AD_CreateComputer ausführen zu können brauchst Du selbst schon wieder zusätzliche Rechte. - _AD_JoinDomain: Verbindet den Computer mit dem Domänen Konto. Der ausführende User muss der User bzw. in der Gruppe sein, die bei _AD_CreateComputer als 3. Parameter angegeben wurde.
- _AD_CreateComputer: Legt ein Computer Konto im AD an und vergiebt Rechte auf das Konto. U.a. wird mit Parameter 3 definiert, welcher User bzw. welche Gruppe einen Computer mit diesem Konto verknüpfen darf.
-
Mit der Funktion _AD_CreateComputer kannst Du angeben, wer (user oder Gruppe) den Computer in die Domäne hängen darf.
-
Doch - ein Computerkonto muss für den entsprechenden Computer vorhanden sein. Die Funktion _AD_JoinDomain stellt nur per WMI eine Verbindung zwischen dem AD Konto und dem Computer her und speichert diese Informationen auf dem Computer ab.
-
Ich nehme mal an, dass die MsgBox danach einen Fehler <> 0 bringt.
Falls ja, nehme ich an, dass das Computer Konto im AD für den Rechner "test" noch nicht existiert?
Kannst Du bitte posten, welchen Fehler die MsgBox zeigt?