l0c4lh0st
Goto Top

VBS Standortbestimmung anhand des Default IP Gateways

Hallo,

ich versuche ein Script zu schreiben welches mit anhand des Default IP Gateways einige einstellungen vornimmt.
Das funktioniert auch soweit.

Das einzige Problem was ich habe ist das wir bei uns teilweise mit VMWare arbeiten.
Die dabei entstehenden Virtuellen Netzwerke werden dabei auch im Script verarbeitet und führen zu verfälschten Ergebnissen.

Hab da jetzt irgendwie ne Gedankenblockade und komm nicht weiter. Wäre super wenn ihr mir auf die Sprünge helft.
Am besten sollte es nur nach Vordefinierten Netzen suchen und wenn diese nicht Auftreten als Location "Unknown" setzen

Hier mal das bisschen Script:

'///  
'/// detects default gateway and sets the correct environment variables  
'///  

Location = "Unknown"  
Dim WSHShell
Dim WSHNetW
Set WSHShell = WScript.CreateObject("WScript.Shell")  
Set WshNetw = Wscript.CreateObject("Wscript.Network")  


'/// get default location  
for each Config in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("Win32_NetworkAdapterConfiguration")  
	if VarType(Config.Ipaddress(0)) = 8 then
		select case Config.DefaultIPGateway(0)
			case "130.30.1.251"  
				Location = "OfficeA"  
			case "192.168.130.1"  
				Location = "OfficeB"  
			case "10.60.1.1"  
				Location = "OfficeB"  
			case "10.170.1.1"  
				Location = "OfficeC"  
			case else
				Location = "Unknown"  
		end select
	end if
next

wscript.echo "Applying settings for location : " & Location & " !"  
setEnvVar "Location", Location  
select case Location
	case "OfficeA"  
		setEnvVar "Irgendwas", "Setze irgendwas"  
	case "OfficeB"  
		setEnvVar "Irgendwas", "Setze irgendwas"  
	case "OfficeC"  
		setEnvVar "Irgendwas", "Setze irgendwas"  
	case else
		unsetEnvVar "Irgendwas", "Setze irgendwas"  
end select

sub setEnvVar (strVarName, strVarValue)
	set oShell = CreateObject("WScript.Shell")  
	set oShellEnv = oShell.Environment("USER")  
	oShellEnv(strVarName) = strVarValue
	set oShellEnv = nothing
	set oShell = nothing
end sub

sub unsetEnvVar (strVarName)
	set oShell = CreateObject("WScript.Shell")  
	set oShellEnv = oShell.Environment("USER")  
	if oShellEnv(strVarName) <> "" then  
		oShellEnv.Remove(strVarName)
	end if
	set oShellEnv = nothing
	set oShell = nothing
end sub

Content-ID: 113479

Url: https://administrator.de/contentid/113479

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

godlie
godlie 08.04.2009 um 11:46:26 Uhr
Goto Top
Naja wie wärs wenn du auf den Namen "Lan-Verbindung" prüfst?
L0c4lh0sT
L0c4lh0sT 08.04.2009 um 11:53:07 Uhr
Goto Top
Danke für deine Antwort.

Wie meinst du das?
Ich habe mit der WMI nicht die möglichkeit. Ich kann auf Caption oder Description gehen.

Dann wäre da noch das Problem das es mehrere Namen gibt, da es auf ca. 2000 Rechnern lauffähig sein soll, die in 3 Unterschiedlichen Büros bzw. Ländern stehen.

Wäre übrigens sehr hilfreich wenn du mir ein Beispiel geben könntest.

MfG
L0c4lh0sT
godlie
godlie 08.04.2009 um 13:28:55 Uhr
Goto Top
Sodala hat ein bisserl gedauert:

Set AdapterConfiguration = GetObject("winmgmts:{impersonationLevel=impersonate}")  
for Each Config in AdapterConfiguration.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID = 'LAN-Verbindung'")  
if(Config.NetConnectionID = "LAN-Verbindung") then  
Set objNic = AdapterConfiguration.Get _
   ("Win32_NetworkAdapterConfiguration.Index=" & Config.DeviceID)  
Wscript.Echo objNic.IpAddress(0)
end if
next

Damit findest du die Netzwerkkarte die LAN-Verbindung heist.
Dieser Technet Artikel kann dir da weiterhelfen face-smile
L0c4lh0sT
L0c4lh0sT 08.04.2009 um 14:00:54 Uhr
Goto Top
Dankeschön!

Funktioniert wie ne 1!

Hoffe doch ich darf den Code 1 zu 1 übernehmen...
Spart ne menge arbeit!
Nochmals danke!

MfG
L0c4lh0sT
godlie
godlie 08.04.2009 um 14:05:56 Uhr
Goto Top
gut geklaut ist halb programmmiert face-smile
L0c4lh0sT
L0c4lh0sT 08.04.2009 um 14:51:42 Uhr
Goto Top
Das heisst dann wohl ja face-smile

Danke nochmal

MfG
L0c4lh0sT