Scripting-Fragen
Scripting-Fragen
Aber generell zu den Scripten hätte ich dann doch noch eine Frage:
Kann ich - auch wenn ich keinen Scan der WindowsPCs durchführe (mache ich über rxScan)- dennoch Scripte auf denen ausführen? Z.B. wäre es praktisch um nur kopierte - aber nicht "installierte" Programme / Scripte vor Ort zu finden und ggf (wie auch immer) zu inventarisieren.
Und noch eine Frage: ich habe im Test (wir sind noch in der Evaluierung) den erkannten Geräten die benutzerdefinierte Eigenschaft "Standort" zugewiesen. Das brauchen wir nicht gänzlich undringend. Den Standort wiederum erkenne ich anhand des IP-Subnetzes. Also Filter auf Subnetz - alles markieren - per Hand "Standort = Musterstadt" zugewiesen ... so weit so unschön.
Gibt es eine Möglichkeit z.B. über die Scripte anhand des Subnetzes XXX (168.192.XXX.YYY) die benutzerdefinierte Eigenschaft "Standort" zuzuweisen?
Kann ich - auch wenn ich keinen Scan der WindowsPCs durchführe (mache ich über rxScan)- dennoch Scripte auf denen ausführen? Z.B. wäre es praktisch um nur kopierte - aber nicht "installierte" Programme / Scripte vor Ort zu finden und ggf (wie auch immer) zu inventarisieren.
Und noch eine Frage: ich habe im Test (wir sind noch in der Evaluierung) den erkannten Geräten die benutzerdefinierte Eigenschaft "Standort" zugewiesen. Das brauchen wir nicht gänzlich undringend. Den Standort wiederum erkenne ich anhand des IP-Subnetzes. Also Filter auf Subnetz - alles markieren - per Hand "Standort = Musterstadt" zugewiesen ... so weit so unschön.
Gibt es eine Möglichkeit z.B. über die Scripte anhand des Subnetzes XXX (168.192.XXX.YYY) die benutzerdefinierte Eigenschaft "Standort" zuzuweisen?
Re: Scripting-Fragen
Skripte funktionieren auch mit der rxScan.exe. Wichtig ist, dass die rxScan.ini im selben Verzeichnis liegt. Die rxScan.ini wird im Sammelverzeichnis beim jeweils nächsten Scan automatisch aktualisiert und sollte wie die rxScan.exe aktuell gehalten werden, falls sie an eine andere Stelle kopiert wurde.
Hier ein Beispielskript zum Setzen der geskripteten Eigenschaft Standort:
Das CheckIp GetScannedIp außerhalb derAfterScan-Funktion läuft immer. Auch z.B. bei unbekannten Geräten. Da GetScannedIp nicht bei einem lokalen Scan mit rxScan.exe funktioniert, gibt es die AfterScan-Funktion. Diese sucht sich aus den erfassten Netzwerkadressen der primären Netzwerkkarte eine (hoffentlich) passende heraus.
Hier ein Beispielskript zum Setzen der geskripteten Eigenschaft Standort:
Code: Alles auswählen
CheckIp GetScannedIp
Function AfterScan()
Dim psNet, ip, ip_temp, ip_list, ip_string
Set psNet = GetPropertySet("NETWORKADAPTER", 1)
If psNet Is Nothing Then
Exit Function
End If
ip_list = psNet("IPADDRESS")
If Len(ip_list) = 0 Then
Exit Function
End If
For Each ip_string In Split(ip_list, " ")
ip_temp = Split(ip_string, ".")
' Nur IPv4
If UBound(ip_temp) = 3 Then
ip = ip_temp
Exit For
End If
Next
If IsEmpty(ip) Then
Exit Function
End If
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
CheckIp ip
End Function
Function CheckIp(ip)
If ip like "192.168.5.*" Then
SetProperty "Standort", "Musterstadt"
ElseIf ip like "192.168.178.*" Then
SetProperty "Standort", "Demodorf"
Else
SetProperty "Standort", "<unbekannt>"
End If
End Function
Re: Scripting-Fragen
Danke erst einmal für die Mühe
Allerdings habe ich da so meine Probleme damit - SetProperty möchte die Benutzerdefinierte Eigenschaft "Filiale" (so heißt die eben bei uns) nicht setzen - ziemlich egal wie ich es mache.
Ich habe das ganze mal recht schlank zum Testen ohne Schnickschnack bei SNMP-Geräten versucht - ziemlich vergeblich.
Erst mit (weil's mir logisch erschien - und immer Test-Button gedrückt um Tippfehler zu vermeiden)
Function AfterSnmpScan()
SetProperty "Filiale","Test"
End Function
Den Aufruf konnte ich noch im Protokoll sehen - aber in den gefundenen Snmp-Geräten tauchte nichs auf
Dann noch mit BeforeSnmpScan() - dann einfach so in das Scriptfeld hinein - recht egal. Das Ergebnis war immer das gleiche, "Test" tauchte nicht unter "Filialen" auf. Ich habe im Script dann alle 3 Methoden drin gelassen - also nicht im Log wundern.
Ich hänge das Log einfach mal an
Allerdings habe ich da so meine Probleme damit - SetProperty möchte die Benutzerdefinierte Eigenschaft "Filiale" (so heißt die eben bei uns) nicht setzen - ziemlich egal wie ich es mache.
Ich habe das ganze mal recht schlank zum Testen ohne Schnickschnack bei SNMP-Geräten versucht - ziemlich vergeblich.
Erst mit (weil's mir logisch erschien - und immer Test-Button gedrückt um Tippfehler zu vermeiden)
Function AfterSnmpScan()
SetProperty "Filiale","Test"
End Function
Den Aufruf konnte ich noch im Protokoll sehen - aber in den gefundenen Snmp-Geräten tauchte nichs auf
Dann noch mit BeforeSnmpScan() - dann einfach so in das Scriptfeld hinein - recht egal. Das Ergebnis war immer das gleiche, "Test" tauchte nicht unter "Filialen" auf. Ich habe im Script dann alle 3 Methoden drin gelassen - also nicht im Log wundern.
Ich hänge das Log einfach mal an
- Dateianhänge
-
- 10.97.2.23@20200527100442.zip
- (1.85 KiB) 1232-mal heruntergeladen
Re: Scripting-Fragen
Also ich konnte die angehängte Datei einlesen und auch das geskriptete Property Filiale erscheint mit dem Wert "Test" unter dem Gerät.
Es gibt übrigens einen Unterschied zwischen geskripteten und benutzerdefinierten Eigenschaften. Nur erstere lassen sich über ein Skript setzen. Im Gegensatz dazu kann man benutzerdefinierte Eigenschaften nur manuell in der Oberfläche (oder über die Kommandzeile mit invcmd.exe) setzen.
Es gibt übrigens einen Unterschied zwischen geskripteten und benutzerdefinierten Eigenschaften. Nur erstere lassen sich über ein Skript setzen. Im Gegensatz dazu kann man benutzerdefinierte Eigenschaften nur manuell in der Oberfläche (oder über die Kommandzeile mit invcmd.exe) setzen.
Re: Scripting-Fragen
Na sieh mal einer an das muss man in der Tat wissen. Damit tut sich nun auch etwas und ich kann weiterexperementieren.
Re: Scripting-Fragen
Puha - das ganze ist dann doch etwas sperrig ...
Ich hatte die Standort-Zuordnung anhand der IP-Nummer noch etwas erweitern müssen - wir haben auch Teilnetze in denen eben im letzten IP-Bereich noch unterteilt wird.
Bei den SNMP-Geräten kein Ding: ip-Nummer ermittelt, mit Split zuerteilt und dann jeweils Abfragen nach ip3 und ip4 gemacht. Klappt gut.
Nun wollte ich das ganze noch für die offline gescannten Windows-Maschinen machen. Der Script kam ja aus diesem Thread. Das ganze noch etwas angepasst (damit ich den unteren Scriptteil für SNMP und Windows gleich halten kann).
... (wie oben 2 Postings höher erwähnt)
im Endeffekt habe ich also nur noch zusätzlich die 2 (weiter oben deklarierten) Variablen ip3 und ip4 noch einmal mit dem 3. und 4. Abschnitt von ip zugewiesen. Die function hatte ich aufgelöst und alles in einen Scriptteil geschrieben.
Allerdings kommt hier der Fehler "Error in "Windows Standort Neu" at line 28: Not an array or object. (ScriptError)" bei der Ausführung.
Vorher hatte ich schon versucht die function CheckIP weiter zu übernehmen und die übergebene Variable ip mit Split zu zerlegen - hier habe ich auch nur Fehlermeldungen gekommen dass ip3/ip4 out of bounds sind ...
Herrje - VB ist hier wohl echt nicht mein Freund
Ich hatte die Standort-Zuordnung anhand der IP-Nummer noch etwas erweitern müssen - wir haben auch Teilnetze in denen eben im letzten IP-Bereich noch unterteilt wird.
Bei den SNMP-Geräten kein Ding: ip-Nummer ermittelt, mit Split zuerteilt und dann jeweils Abfragen nach ip3 und ip4 gemacht. Klappt gut.
Code: Alles auswählen
ip = GetScannedIP(ip)
ipA = Split(ip,".")
ip3 = ipA(2)
ip4 = ipA(3)
If ip3 = 2 Or ip3 = 3 Then
Filiale ="110"
ElseIf ip3 = 17 And ip4 > 128 And ip4 < 160 Then
Filiale ="550"
....
SetProperty "Filiale", Filiale
End Function
... (wie oben 2 Postings höher erwähnt)
Code: Alles auswählen
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
ip3 = CLng(ip(2))
ip4 = CLng(ip(3))
If ip3 = 2 Or ip3 = 3 Then
Filiale ="110"
ElseIf ip3 = 17 And ip4 > 128 And ip4 < 160 Then
Filiale ="550"
....
SetProperty "Filiale", Filiale
End Function
Allerdings kommt hier der Fehler "Error in "Windows Standort Neu" at line 28: Not an array or object. (ScriptError)" bei der Ausführung.
Vorher hatte ich schon versucht die function CheckIP weiter zu übernehmen und die übergebene Variable ip mit Split zu zerlegen - hier habe ich auch nur Fehlermeldungen gekommen dass ip3/ip4 out of bounds sind ...
Herrje - VB ist hier wohl echt nicht mein Freund
- Dateianhänge
-
- Standort.zip
- (703 Bytes) 1251-mal heruntergeladen
Re: Scripting-Fragen
Die Zeile 27 überschreibt das Array ip mit der textuellen IP. In ip steht danach also kein Array mehr, in dem man Elemente abfragen könnte. Daher der Fehler.
Nachdem ip in der Textform später nicht verwendet wird, würde ich vorschlagen die Zeile einfach zu löschen.
Code: Alles auswählen
ip = CLng(ip(0)) & "." & CLng(ip(1)) & "." & CLng(ip(2)) & "." & CLng(ip(3))
Nachdem ip in der Textform später nicht verwendet wird, würde ich vorschlagen die Zeile einfach zu löschen.
Re: Scripting-Fragen
Ok ... für heute sollte ich Schluss machen ... ich sehe den Wald vor Bäumen nicht mehr Danke für die Antwort