Ureader.de  
Internetzugriff auf de.* text-Newsgroup
   Startseite   |   Anmeldung   |   Archiv   |  
 
Startseite
comp.os
be
misc
msdos
ms-windows.misc
ms-windows.nt
ms-windows.programmer
os2.advocacy
os2.apps
os2.misc
os2.networking
os2.programmer
os2.setup
unix.apps.gnome
unix.apps.kde
unix.apps.misc
unix.bsd
unix.discussion
unix.linux.hardware
unix.linux.infos
unix.linux.isdn
unix.linux.misc
unix.linux.moderated
unix.misc
unix.networking.misc
unix.networking.samba
unix.programming
unix.sinix
unix.x11
vms
  
 
Datum: Tue, 23 Jun 2009 09:03:16 +0200,    Newsgroup: de.comp.os.ms-windows.misc        back       

Umschalten auf verschiedene IP-Adressen   
Hallo,

ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen 
unterwegs.

Gibt es eine Software oder eine andere Möglichkeit (Script oder 
ähnliches) um zwischen mehreren IP-Adressen umzuschalten?

Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in einem 
anderen Netz eine andere feste IP und in wieder anderen Netzen eine per 
DHCP zugewiesene IP.

Mit freundlichen Grüßen
Susann
Datum: Tue, 23 Jun 2009 09:03:16 +0200   Autor:   Susann Markward

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward  schrieb:

Hallo Susanne,

> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?

Löhnware:

http://www.netswitcher.com/

MultiPlugMate, auch deutsch
http://www.gslantern.com/mpm/index.html

http://home.arcor.de/groschh/software/ipprofiler/index.htm

Freeware:

http://code.google.com/p/netprofiles/

http://www.mobilenetswitch.com/

Freeware nichtkommerziell, pro: 15 Euro
http://www.netsetman.com


-- 
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Datum: Tue, 23 Jun 2009 09:30:12 +0200   Autor:   Ralf Breuer

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward schrieb:

> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen 
> unterwegs.

> Gibt es eine Software oder eine andere Möglichkeit (Script oder 
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?

Die c't hat vor längerer Zeit dazu mal eine Anleitung zum Einrichten
mehrerer Netzwerkverbindungen und passende Skripte zum Umschalten zwischen
selbigen veröffentlicht - gerade für Notebooks gedacht.

Ich weiß leider nicht mehr, wann das war. Vielleicht liefert die
Artiikelsuche bei heise.de was? Das betreffeende Heft kann man dann für
kleines Geld nachbestellen.

Andi

-- 
"Es sind seelisch kranke Menschen mit starken Komplexen, die zu Recht die
 Angst haben, ihre Postings seien dummes Gelabere, und die deshalb ihren
 Namen und vermeintlichen guten Ruf durch die Verwendung eines Pseudonyms
 schützen wollen."                                          [Werner Arts]
Datum: Tue, 23 Jun 2009 10:00:18 +0200   Autor:   Andreas Viehrig

Re: Umschalten auf verschiedene IP-Adressen   
Hi,
On 23 Jun., 09:03, Susann Markward 
wrote:

> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?

Eine solche Software liegt vielen Notebooks bereits bei. Vielleicht
durchforstest Du mal die mitgelieferten Datenträger und das
Supportangebot des Herstellers Deines Notebooks.

Michael
Datum: Tue, 23 Jun 2009 01:56:57 -0700 (PDT)   Autor:   Michael Paul

Re: Umschalten auf verschiedene IP-Adressen   
Hallo,

On Tue, 23 Jun 2009 09:30:12 +0200, "Ralf Breuer" wrote:
>Susann Markward schrieb:
>> Gibt es eine Software oder eine andere Möglichkeit (Script oder
>> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
>
> Löhnware:
[...]

sorry, wenn ich auf den Zug aufspringe und selbst suchen sollte. Aber
wahrscheinlich habe ich Tomaten auf den Augen!?

Ich habe mir die Beschreibung der vorgeschlagenen Tools mal
angeschaut. Nachteil scheint IMHO zu sein, dass ein Wechsel immer
manuell durch explizietes Aktivieren eines Profils erfolgen muss?!

Als ich noch ein IBM/Lenovo NB hatte, lief dort das IBM Tool "Access
Connection Manager". Dieses merkte automatisch "wo" man sich befand
und aktivierte das entsprechende Profil.

Nun bin ich auf einem HP Compaq NB und das IBM Tool verweigert
natürlich hier den Dienst ;-), aber HP scheint nichts equivalentes
anzubieten, noch nicht mal was an obige Tools herankommt?
-- 
DuG
Oliver
Datum: Tue, 23 Jun 2009 11:10:53 +0200   Autor:   Oliver Doll

Re: Umschalten auf verschiedene IP-Adressen   
Oliver Doll  schrieb:

> Ich habe mir die Beschreibung der vorgeschlagenen Tools mal
> angeschaut. Nachteil scheint IMHO zu sein, dass ein Wechsel immer
> manuell durch explizietes Aktivieren eines Profils erfolgen muss?!

Richtig.

> Als ich noch ein IBM/Lenovo NB hatte, lief dort das IBM Tool "Access
> Connection Manager". Dieses merkte automatisch "wo" man sich befand
> und aktivierte das entsprechende Profil.

Deshalb sind Lenovo-NBs im Auslieferungszustand unbenutzbar langsam, weil 
für alles und jedes ein Helferlein im Hintergrund werkelt ;-)

> Nun bin ich auf einem HP Compaq NB und das IBM Tool verweigert
> natürlich hier den Dienst ;-), aber HP scheint nichts equivalentes
> anzubieten, noch nicht mal was an obige Tools herankommt?

Warum auch? Es gibt doch genügend Alternativen.

-- 
Gruß
Ralf
Ich mag kein TOFU. Siehe http://einklich.net/usenet/zitier.htm
Bei Direkt-Mails NOSPAM entfernen
Datum: Tue, 23 Jun 2009 13:03:58 +0200   Autor:   Ralf Breuer

Re: Umschalten auf verschiedene IP-Adressen   
On Tue, 23 Jun 2009 13:03:58 +0200, "Ralf Breuer" wrote:
>Oliver Doll  schrieb:
>> Dieses merkte automatisch "wo" man sich befand und aktivierte das entsprechende Profil.
>
> Deshalb sind Lenovo-NBs im Auslieferungszustand unbenutzbar langsam, weil 
> für alles und jedes ein Helferlein im Hintergrund werkelt ;-)

stimmt, erst mal alles runter was man so nicht braucht und ansonsten
ist natürlich auch autoruns dein Freund ;-)

>> HP scheint nichts equivalentes  anzubieten, noch nicht mal was an obige Tools
>> herankommt?
>
>Warum auch? Es gibt doch genügend Alternativen.

jau, wenn's tatsäschlich nicht mehr leistet. Wie gesagt: Das Access
Connections switchte halt autonom - das war sehr praktisch, da man
sich u.U. ja noch gar nicht am DC angemeldet hatte, bzw. noch gar
nicht konnte ohne korrekte NW-Settings.
-- 
DuG
Oliver
Datum: Tue, 23 Jun 2009 13:58:10 +0200   Autor:   Oliver Doll

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward  typed:

> ich bin öfters mit meinem NB (WinXP Prof. Ed.) in verschiedenen Netzen
> unterwegs.
>
> Gibt es eine Software oder eine andere Möglichkeit (Script oder
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?
>
> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in
> einem anderen Netz eine andere feste IP und in wieder anderen Netzen
> eine per DHCP zugewiesene IP.

Es könnte vielleicht ein Script anhand der Fehlermeldungen in der
Ereignisanzeige gestrickt werden. Ansonsten gibt es zwei einfache
Systemmöglichkeiten unter XP. Um eine Netzwerk-Konfiguration zu
speicnern, kannst Du diesen Befehl benutzen:

netsh interface ip dump > Netzwerk.cfg

Es handelt sich dabei ganz einfach um Textdateien, die mit einem
beliebigen Editor auch darstellbar sind. Willst Du diese Konfiguraion
wieder laden, gibst Du diesen Befehl ein:

netsh -f Netzwerk.cfg

Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
Skript veröffentlicht, das zwischen DHCP und festen Adressen
umzuschalten vermag:

MID: <news:4a2683ee$0$31337$9b4e6d93@newsspool4.arcor-online.net>

http://groups.google.com/group/de.comp.os.ms-windows.netzwerke/msg/da6f4b3512ec8886

Vielleicht kannst Du es ja an Deine Bedürfnisse anpassen. Ein solches
Skript könnte natürlich auch vollständig automatisiert werden, das
erfordert jedoch genauere Informationen.

-- 
ЯR
Datum: Tue, 23 Jun 2009 18:49:01 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Hallo Susann,

Susann Markward   wrote:
> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in
> einem anderen Netz eine andere feste IP und in wieder anderen
> Netzen eine per DHCP zugewiesene IP.

Zumindest zwei Netzwerke gehen IMHO ohne Probleme, wenn kein DHCP
gefunden wurde, wird eine alternative (feste) IP verwendet...

Ciao Thomas
Datum: 23 Jun 2009 19:58:00 +0200   Autor:   Thomas Niering

Re: Umschalten auf verschiedene IP-Adressen   
Hallo,

*Rüdiger Rösler* schrieb am 23.06.2009 18:49:
> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
> Skript veröffentlicht, das zwischen DHCP und festen Adressen
> umzuschalten vermag  ...

Danke das funktioniert vortrefflich! ;-)

Ich habe mir einfach zwei Verknüpfungen auf meinen Desktop gelegt. Die 
eine mit dem Ziel:

  cscript.exe "C:\<Pfad>\AssIPAdd.vbs" DHCP

und die andere mit dem Ziel:

  cscript.exe "C:\<Pfad>\AssIPAdd.vbs" 192.168.x.y 192.168.x.z

Dazu noch die beiden Verknüpfungen mit einem neuen Icon von 
<www.vistaicons.com> versehen und voilà, es sieht auch noch schön aus.
Datum: Wed, 24 Jun 2009 14:50:17 +0200   Autor:   Susann Markward

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward  typed:

> Danke das funktioniert vortrefflich! ;-)

Es ist ein bisserle Spaghettikode, so müsste ein Teil eigentlich so
lauten:

If wmiNICcfg.EnableDHCP = 0 Then
    blnWait = True
    WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
Else
    WScript.Echo "Aktivierung von DHCP ist gescheitert."
End If


Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn es
auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz spontan
geschrieben, weil ich gerade Zeit und Lust dazu hatte und hatte nicht
viel Zeit, es auf Fehler zu prüfen.

-- 
ЯR
Datum: Wed, 24 Jun 2009 19:04:20 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward wrote:
> Gibt es eine Software oder eine andere Möglichkeit (Script oder 
> ähnliches) um zwischen mehreren IP-Adressen umzuschalten?

Ich habe mein Notebook einfach auf DCHP eingestellt. Warum das 
funktioniert, siehe unten.

> Ich habe bspw. an meinem regulären Arbeitsplatz eine feste IP, in einem 
> anderen Netz eine andere feste IP und in wieder anderen Netzen eine per 
> DHCP zugewiesene IP.

Gibt es am Arbeitsplatz keinen DHCP-Server? Wenn doch, kann der einem 
Client immer wieder die gleiche IP zuweisen, das muss nicht zwangsläufig 
dynamisch passieren..
-- 


	CU	Christoph Maercker.
Datum: Thu, 25 Jun 2009 09:06:37 +0200   Autor:   Christoph Maercker

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward  typed:

> Danke das funktioniert vortrefflich! ;-)

Da ich jetzt eine neue Kundin habe, gibt es auch ein Update. Und weil Du
Dich so nett bedankt hast, was mich sehr gefreut hat. Das Skript ist
jetzt fehlerfrei, eine eher ungewöhnliche Eigenschaft im
Software-Bereich! ;-) Allerdings muss jetzt zur Änderung der IP-Adressen
die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
Netzwerkadaptern eine separate Zuweisung vornehmen zu können. Dafür ist
auch wesentlich umfangreicher geworden.

'########################### AssIPAdd.vbs #############################
'                           von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl: (<http://de.wikipedia.org/wiki/MAC-Adresse>)
' CScript AssIPAdd.vbs <MAC-Adr.> <IP-Adr. NIC> <IP-Adr. Gateway>
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0 192.168.1.141 192.168.1.100
' Alternativ kann ohne weiteren Parameter DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.

Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration where "
Dim wmi, wmiNICs, wmiNIC, str, strIPAdd, strIPGW, strSubnetMask

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
                    "!\\.\root\cimv2")

On Error Resume Next
Set wmiNICs = wmi.ExecQuery(NICCFG & "IPEnabled = True and " & _
                         "MACAddress = '" & WScript.Arguments(0) & "'")
If Err <> 0 Then
    WScript.Echo "Fehler " & Err.Number & ": " & Err.Description
    WScript.Quit(WScript.Sleep(30000))
End If
On Error GoTo 0

If WScript.Arguments.Count = 3 Then
    If IsNumeric(WScript.Arguments(1)) Then
        strIPAdd = Array(WScript.Arguments(1))  ' z. B. "192.168.1.141"
    End If
    If IsNumeric(WScript.Arguments(2)) Then
        strIPGW = Array(WScript.Arguments(2))   ' z. B. "192.168.1.100"
    End If
    strSubnetMask = Array("255.255.255.0")

    For Each wmiNIC In wmiNICs
        If wmiNIC.DHCPEnabled Then
            str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
            Select Case wmiNIC.ReleaseDHCPLease
                Case 0:
                Case 1: str = str & "Windows-Neustart erforderlich."
                Case Else
                    str = "DHCP-Zuweisung kann nicht aufgehoben werden."
            End Select
            WScript.Echo str & vbCRLF
        End If
        If wmiNIC.EnableStatic(strIPAdd, strSubnetMask) = 0 Then
            WScript.Echo "Statische IP-Adresse wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
                         "misslungen."
        End If
        If wmiNIC.SetGateways(strIPGW, Array(1)) = 0 Then
            WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
                         "gescheitert."
        End If
    Next
Else
    If AutoStartSvc("DHCP") Then
        For Each wmiNIC In wmiNICs
            If wmiNIC.DHCPEnabled Then
                WScript.Echo "DHCP war schon aktiviert."
                WScript.Echo "Zuweisung wird erneuert!"
                wmiNIC.RenewDHCPLease
                Exit For
            End If
            If wmiNIC.EnableDHCP = 0 Then
                WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
            Else
                WScript.Echo "Aktivierung von DHCP ist gescheitert."
            End If
        Next
    End If
End If
PingTorweg

With CreateObject("WScript.Shell")
    With .Exec("ipconfig /all")
        Do Until .StdOut.AtEndOfStream
            WScript.StdOut.Write .StdOut.ReadAll
        Loop
    End With
    .PopUp "Konfiguration abgeschlossen.", 60, _
           "Netzwerkadapter", vbInformation Or vbSystemModal
End With

Function AutoStartSvc(strDienst)
    Dim wmiSvc, wmiServ

    For Each wmiSvc In SelectService(strDienst)
        If wmiSvc.StartMode <> "Auto" Then
            If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
                WScript.Echo "Startmodus des " & strDienst & _
                             "-Dienstes konnte nicht geändert werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.StartMode
                        WScript.Sleep 1000
                    Loop While wmiServ.StartMode <> "Auto"
                    WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
                                 " automatischen Start gesetzt."
                Next
            End If
        End If
        If Not(wmiSvc.Started) Then
            If wmiSvc.StartService <> 0 Then
                WScript.Echo "Der Dienst " & strDienst & " kann " & _
                             "nicht gestartet werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.State
                        WScript.Sleep 1000
                    Loop Until wmiServ.Started
                Next
                WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
            End If
        End If
    Next
    For Each wmiSvc In SelectService(strDienst)
        AutoStartSvc = wmiSvc.Started
    Next
End Function

Function SelectService(strSvc)
    Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
                                   " where Name = 'DHCP'")
End Function

Sub PingTorweg
    Dim wmiNIC, i, x

    Do
        For Each wmiNIC In wmi.ExecQuery(NICCFG & "IPEnabled = True")
            If Not(IsNull(wmiNIC.DefaultIPGateway)) Then
                For i = 0 To UBound(wmiNIC.DefaultIPGateway)
                    If wmiNIC.DefaultIPGateway(i) > 0 Then
                        Do
                            x = x + 1
                            If x > 5 Then
                                WScript.Echo "Gateway nicht erreichbar."
                                Exit Do
                            End If
                        Loop Until Ping(wmiNIC.DefaultIPGateway(i))
                        Exit Sub
                    End If
                Next
            End If
        Next
        WScript.Sleep 1000
    Loop
End Sub

Function Ping(strIPAdd)
    Dim wmiPing, i, blnPong, blnFirst

    For i = 0 To 2
        For Each wmiPing In wmi.ExecQuery("select * from " & _
                "Win32_PingStatus where Address = '" & strIPAdd & "'")
            If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
            blnPong = CBool(wmiPing.StatusCode = 0)
            If Not(blnPong) Then
                WScript.Echo GetError(wmiPing.StatusCode) & vbCRLF
            End If
        Next
        WScript.Sleep 1000
    Next

    Ping = blnPong
End Function

Function GetError(intNumber)
    Dim arr

    arr = Array("Success", "Buffer Too Small", "Destination Net " & _
          "Unreachable", "Destination Host Unreachable", _
          "Destination Protocol Unreachable", "Destination Port " & _
          "Unreachable", "No Resources", "Bad Option", "Hardware " & _
          "Error", "Packet Too Big", "Request Timed Out", _
          "Bad Request", "Bad Route", "TimeToLive Expired Transit", _
          "TimeToLive Expired Reassembly", "Parameter Problem", _
          "Source Quench", "Option Too Big", "Bad Destination")
    ReDim Preserve arr(50)
    arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"

    GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
               arr(intNumber - 11000)
End Function
Datum: Thu, 25 Jun 2009 20:00:04 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Rüdiger Rösler  wrote:

> Allerdings muss jetzt zur Änderung der IP-Adressen
>die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
>Netzwerkadaptern eine separate Zuweisung vornehmen zu können.

Noch ein Verbesserungsvorschlag: die MAC-Adresse sollte als 3.
Parameter optional sein, d.h. wenn nur eine Netzwerkkarte gefunden
wird, wird nur diese geändert. Wenn mehrere vorhanden sind, könnte
z.B. ein Skriptabbruch erfolgen (oder eine Nachfrage). 

Und wenn noch ein Mini-GUI für die 2-3 Parameter integriert wäre, wäre
es perfekt... 

Thorsten
Datum: Fri, 26 Jun 2009 17:21:52 +0200   Autor:   Thorsten Albrecht

Re: Umschalten auf verschiedene IP-Adressen   
Thorsten Albrecht  typed:

> Rüdiger Rösler  wrote:
>
>> Allerdings muss jetzt zur Änderung der IP-Adressen
>>die MAC-Adresse eingegeben werden. Dies dient nur dazu, bei mehreren
>>Netzwerkadaptern eine separate Zuweisung vornehmen zu können.
>
> Noch ein Verbesserungsvorschlag: die MAC-Adresse sollte als 3.
> Parameter optional sein, d.h. wenn nur eine Netzwerkkarte gefunden
> wird, wird nur diese geändert. Wenn mehrere vorhanden sind, könnte
> z.B. ein Skriptabbruch erfolgen (oder eine Nachfrage).
>
> Und wenn noch ein Mini-GUI für die 2-3 Parameter integriert wäre, wäre
> es perfekt...

Der erste Wunsch ist schon erledigt. Allerdings reicht es mir nun. Das
Wetter ist einfach zu schön! :-) Dieses Skript kann für Windows auch so
umgebaut werden, um es Remote zur Administration zu verwenden:

'########################### AssIPAdd.vbs #############################
'                           von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl: (<http://de.wikipedia.org/wiki/MAC-Adresse>)
' CScript AssIPAdd.vbs <MAC-Adr.> <IP-Adr. NIC> <IP-Adr. Gateway>
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0 192.168.1.141 192.168.1.100
' Alternativ kann ohne weiteren Parameter DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs 00:07:E9:BB:FE:A0
' Wird die MAC-Adresse nicht angegeben, so wird der erste verfügbare
' Netzwerk-Adapter verwendet, bei dem das IP aktiviert ist.
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.
' Einige Beispiele bei Aufruf mit CScript:
' AssIPAdd.vbs 00-07-E9-BB-FE-A0 192.168.0.141 192.168.0.100
' AssIPAdd.vbs    ' DHCP für die erste verfügbare NIC wird aktiviert
' AssIPAdd.vbs 00:07:E9:BB:FE:A0    ' DHCP für NIC wird aktiviert

Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration"
Dim wmi, wmiNICs, wmiNIC, strMAC

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
                    "!\\.\root\cimv2")
WScript.Echo
If WScript.Arguments.Count = 0 Then
    For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled = True")
        If Not(IsNull(wmiNIC.MACAddress)) Then
            strMAC = wmiNIC.MACAddress  ' 1. Adapter wird verwendet
            Exit For
        End If
    Next
    If IsEmpty(strMAC) Then WScript.Quit
Else
    strMAC = WScript.Arguments(0)
End If
strMAC = Join(Split(strMAC, Mid(strMAC, 3, 1)), ":")

Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True " & _
                            "and MACAddress = '" & strMAC & "'")

If WScript.Arguments.Count = 3 Then
    Call StaticEnable(WScript.Arguments, wmiNICs)
ElseIf AutoStartSvc("DHCP") Then
    Call ActivateDHCP(wmiNICs)
End If
Call PingTorweg(strMAC)

With CreateObject("WScript.Shell")
    With .Exec("ipconfig /all")
        Do Until .StdOut.AtEndOfStream
            WScript.StdOut.Write .StdOut.ReadAll
        Loop
    End With
    .PopUp "Konfiguration für " & strMAC & " abgeschlossen.", 60, _
           "Netzwerkadapter", vbInformation Or vbSystemModal
End With

Sub ActivateDHCP(ByRef wmiNICCfg)
    Dim wmiNIC

    For Each wmiNIC In wmiNICCfg
        If wmiNIC.DHCPEnabled Then
            WScript.Echo "DHCP war schon aktiviert, Zuweisung wird" & _
                         " jetzt erneuert!"
            wmiNIC.RenewDHCPLease
            Exit For
        End If
        If wmiNIC.EnableDHCP = 0 Then
            WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
        Else
            WScript.Echo "Aktivierung von DHCP ist gescheitert."
        End If
    Next
End Sub

Sub StaticEnable(ByRef objArgs, ByRef wmiNICCfg)
    Dim strIP(3), wmiNIC, str, i

    For i = 1 To 2
        If IsNumeric(objArgs(i)) Then
            strIP(i-1) = Array(objArgs(i))
        End If
    Next
    strIP(2) = Array("255.255.255.0")

    For Each wmiNIC In wmiNICCfg
        If wmiNIC.DHCPEnabled Then
            str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
            Select Case wmiNIC.ReleaseDHCPLease
                Case 0:
                Case 1: str = str & "Windows-Neustart erforderlich."
                Case Else
                    str = "DHCP-Zuweisung kann nicht aufgehoben werden."
            End Select
            WScript.Echo str & vbCRLF
        End If
        If wmiNIC.EnableStatic(strIP(0), strIP(2)) = 0 Then
            WScript.Echo "Statische IP-Adresse wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
                         "misslungen."
        End If
        If wmiNIC.SetGateways(strIP(1), Array(1)) = 0 Then
            WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
                         "gescheitert."
        End If
    Next
End Sub

Function AutoStartSvc(strDienst)
    Dim wmiSvc, wmiServ

    For Each wmiSvc In SelectService(strDienst)
        If wmiSvc.StartMode <> "Auto" Then
            If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
                WScript.Echo "Startmodus des " & strDienst & _
                             "-Dienstes konnte nicht geändert werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do While wmiServ.StartMode <> "Auto"
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.StartMode
                        WScript.Sleep 1000
                    Loop
                    WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
                                 " automatischen Start gesetzt."
                Next
            End If
        End If
        If Not(wmiSvc.Started) Then
            If wmiSvc.StartService <> 0 Then
                WScript.Echo "Der Dienst " & strDienst & " kann " & _
                             "nicht gestartet werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.State
                        WScript.Sleep 1000
                    Loop Until wmiServ.Started
                Next
                WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
            End If
        End If
    Next
    For Each wmiSvc In SelectService(strDienst)
        AutoStartSvc = wmiSvc.Started
    Next
End Function

Function SelectService(strSvc)
    Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
                                   " where Name = '" & strSvc & "'")
End Function

Sub PingTorweg(strMAC)
    Dim wmiNIC, i, x

    Do
        For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled" & _
                           " = True and MACAddress = '" & strMAC & "'")
            If IsNull(wmiNIC.DefaultIPGateway) Then Exit For
            For i = 0 To UBound(wmiNIC.DefaultIPGateway)
                Do Until Ping(wmiNIC.DefaultIPGateway(i))
                    If x >= 5 Then
                        WScript.Echo "Gateway ist nicht erreichbar."
                        Exit Do
                    End If
                    WScript.Sleep 1000
                    x = x + 1
                Loop
                Exit Do
            Next
        Next
        WScript.Sleep 1000
    Loop
End Sub

Function Ping(strIPAdd)
    Dim wmiPing, blnPong

    For Each wmiPing In wmi.ExecQuery("select * from " & _
            "Win32_PingStatus where Address = '" & strIPAdd & "'")
        If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
        blnPong = CBool(wmiPing.StatusCode = 0)
        If Not(blnPong) Then
            WScript.Echo GetError(wmiPing.StatusCode) & vbCRLF
        End If
    Next

    Ping = blnPong
End Function

Function GetError(intNumber)
    Dim arr

    arr = Array("Success", "Buffer Too Small", "Destination Net " & _
          "Unreachable", "Destination Host Unreachable", _
          "Destination Protocol Unreachable", "Destination Port " & _
          "Unreachable", "No Resources", "Bad Option", "Hardware " & _
          "Error", "Packet Too Big", "Request Timed Out", _
          "Bad Request", "Bad Route", "TimeToLive Expired Transit", _
          "TimeToLive Expired Reassembly", "Parameter Problem", _
          "Source Quench", "Option Too Big", "Bad Destination")
    ReDim Preserve arr(50)
    arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"

    GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
               arr(intNumber - 11000)
End Function
'########################### AssIPAdd.vbs #############################
Datum: Fri, 26 Jun 2009 19:24:54 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Rüdiger Rösler  wrote:

>Der erste Wunsch ist schon erledigt.

Herzlichen Dank!!

Thorsten
Datum: Tue, 30 Jun 2009 18:37:42 +0200   Autor:   Thorsten Albrecht

Re: Umschalten auf verschiedene IP-Adressen   
Thorsten Albrecht  typed:

> Herzlichen Dank!!

Keine Ursache, Thorsten, ich habe die Lösung ja nicht veröffentlicht!!!

-- 
ЯR
Datum: Tue, 30 Jun 2009 23:51:36 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Am 24.06.2009, 19:04 Uhr, schrieb Rüdiger Rösler  
:

> Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn es
> auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz spontan
> geschrieben, weil ich gerade Zeit und Lust dazu hatte und hatte nicht
> viel Zeit, es auf Fehler zu prüfen.

Hey, sag mal, Du Skripting-Guru:

- Wie kann man sich denn diese ganze kranke Syntax überhaupt merken?
- Wie komme ich denn an diese seltsamen Namen der ganzen Objekte, und  
woher weiss ich, welches vorhandene Variablen-Ding was im System macht? Da  
ist man doch jahrelang nur am Doku-Wälzen, oder?
- Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt; meine  
Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss man denn  
dazu installiert haben?

Respekt...

Ansgar

-- 
Mails an die angegebene Adresse erreichen mich - oder auch nicht.  
Nützliche Adresse gibt's bei Bedarf!
Mail to the given address may or may not reach me - useful address will be  
given when required!
Datum: Wed, 01 Jul 2009 14:27:02 +0200   Autor:   Ansgar Strickerschmidt

Re: Umschalten auf verschiedene IP-Adressen   
Ansgar Strickerschmidt  typed:

> Am 24.06.2009, 19:04 Uhr, schrieb Rüdiger Rösler
> :
>
>> Natürlich soll es auf die Zuweisung durch DHCP nur dann warten, wenn
>> es auch erfolgreich aktiviert wurde, Ich habe dieses Skript ganz
>> spontan geschrieben, weil ich gerade Zeit und Lust dazu hatte und
>> hatte nicht viel Zeit, es auf Fehler zu prüfen.
>
> Hey, sag mal, Du Skripting-Guru:
>
> - Wie kann man sich denn diese ganze kranke Syntax überhaupt merken?

Was heißt merken? Ich habe eine Online-Hilfe. Meine Spiegelneuronen sind
dafür zu kostbar. Logisch Denken sollte man allerdings ein wenig können.

> - Wie komme ich denn an diese seltsamen Namen der ganzen Objekte, und
> woher weiss ich, welches vorhandene Variablen-Ding was im System
> macht? Da ist man doch jahrelang nur am Doku-Wälzen, oder?

Die WMI wurde nicht unter Windows entwickelt, sie ist jedoch im SDK
ziemlich gut dokumentiert.

> - Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt;
> meine Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss
> man denn dazu installiert haben?

Nix. Das ist der Grund, warum ich diese kranke Syntax benutze. Sie ist
Bestandteil des OS. Man gewöhnt sich an allet. Computer dienen in den
allermeisten Fällen zur Bewältigung wiederkehrender Aufgaben, sonst
machen sie, was sie wollen.

>
> Respekt...

Mit Speck fängt man Mäuse ... ;-)

-- 
ЯR
Datum: Fri, 3 Jul 2009 07:00:02 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Am 03.07.2009, 07:00 Uhr, schrieb Rüdiger Rösler  
:

>> - Ich habe mein Lebtag unter Windows noch nie ein Skript benutzt;
>> meine Aufgaben sind leider zuallermeist nicht wiederkehrend. Was muss
>> man denn dazu installiert haben?
>
> Nix. Das ist der Grund, warum ich diese kranke Syntax benutze. Sie ist
> Bestandteil des OS. Man gewöhnt sich an allet. Computer dienen in den
> allermeisten Fällen zur Bewältigung wiederkehrender Aufgaben, sonst
> machen sie, was sie wollen.

Naja, das kommt jetzt drauf an, was man unter "wiederkehrende Aufgabe"  
genau versteht.
"Entwerfe einen Schaltplan" ist bspw. für einen Hardware-Entwickler sicher  
eine regelmäßig wiederkehrende Aufgabe - allerdings eine, die sich im  
Gegensatz zu "Sichere täglich Ordner X, Y und Z von Laufwerk C:" nicht  
unbedingt skripten lässt ;)

Ansgar

-- 
Mails an die angegebene Adresse erreichen mich - oder auch nicht.  
Nützliche Adresse gibt's bei Bedarf!
Mail to the given address may or may not reach me - useful address will be  
given when required!
Datum: Fri, 03 Jul 2009 09:29:04 +0200   Autor:   Ansgar Strickerschmidt

Re: Umschalten auf verschiedene IP-Adressen   
Hallo,

*Rüdiger Rösler* schrieb am 23.06.2009 18:49:
> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
> Skript veröffentlicht, das zwischen DHCP und festen Adressen
> umzuschalten vermag:

Ich muss doch noch einmal nachhaken. SRY

Ich war längere Zeit nun Offline, bzw. zu Hause (wegen Urlaub) in meinem 
privaten WLAN. Jetzt wieder zurück auf Arbeit habe ich Dein prima Script 
ausgeführt, konnte aber nicht ins Internet. Nach einer kurzen Analyse 
habe ich den Fehler gefunden. Das Script setzt leider die DNS-Server 
(weder primär noch sekundär) nicht. Dort stand einfach nichts drin.

Kann man das evtl. noch nachrüsten?
Datum: Fri, 14 Aug 2009 15:21:23 +0200   Autor:   Susann Markward

Re: Umschalten auf verschiedene IP-Adressen   
Susann Markward  typed:

>> Wenn Du also im Netz zu Hause unterwegs bist, nennst Du diese Datei
>> Nethome.cfg und auf der Arbeit AtWorkNet.cfg. Vor kurzem habe ich ein
>> Skript veröffentlicht, das zwischen DHCP und festen Adressen
>> umzuschalten vermag:
>
> Ich muss doch noch einmal nachhaken. SRY
>
> Ich war längere Zeit nun Offline, bzw. zu Hause (wegen Urlaub) in
> meinem privaten WLAN. Jetzt wieder zurück auf Arbeit habe ich Dein
> prima Script ausgeführt, konnte aber nicht ins Internet. Nach einer
> kurzen Analyse habe ich den Fehler gefunden. Das Script setzt leider
> die DNS-Server (weder primär noch sekundär) nicht. Dort stand einfach
> nichts drin.
>
> Kann man das evtl. noch nachrüsten?

Anspruchsvolle Kunden hier! :-) Ich habe vor einiger Zeit ein Skript zum
Setzen der DNS-Server veröffentlicht:
http://groups.google.com/group/de.comp.hardware.netzwerke.misc/browse_frm/thread/93be2c5c7fad2caa/834246b84b928c62?hl=de&q=#834246b84b928c62
Message-ID: <4a3ba5a7$0$31879$9b4e6d93@newsspool3.arcor-online.net>

Auf die Schnelle habe ich beide Skripte integriert, ist halt eben ein
wenisch Spaghetti-like:

'########################### AssIPAdd.vbs #############################
'                           von h.r.roesler
' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
' Einschalten von DHCP.
Option Explicit
' Dieses Skript eignet sich zur Festlegung einer statischen IP-Adresse
' für den Netzwerkadapter. In der Eingabeaufforderung lautet die Syntax
' für diesen Befehl (CScript.exe ist zur Ausführung notwendig):
' CScript AssIPAdd.vbs <IP NIC> <IP Gateway> /DNS <DNS-Server> <MAC>
' CScript AssIPAdd.vbs 192.168.1.141 192.168.1.100 /DNS 208.67.222.222
'                      194.25.2.129 208.67.220.220 00:07:E9:BB:FE:A0
' Alternativ kann DHCP eingeschaltet werden:
' CScript AssIPAdd.vbs DHCP /DNS <DNS-Server> <MAC>
' CScript AssIPAdd.vbs DHCP /DNS 208.67.222.222 194.25.2.129
'                      208.67.220.220 00:07:E9:BB:FE:A0
' Ist nur ein IP-Netzwerk-Adapter verfügbar, so ist die Angabe der
' MAC-Adresse nicht erforderlich. Bei mehreren NICs muss die MAC-
' Adresse angegeben werden. Werden keine DNS-Server angegeben, so
' erfolgt die Zuweisung durch DHCP, was natürlich statisch nicht geht.
' Es können beliebig viele DNS-Server angegeben werden.
' Getestet nur unter Windows XP.
' Zur Ausführung dieses Skripts sind die Rechte eines Netzwerk-
' Operators erforderlich.

Const NICCFG = "Select * from Win32_NetworkAdapterConfiguration"
Dim wmi, wmiNICs, wmiNIC, strMAC, strVerb, blnNIC, i, j
Dim wshArgs, blnCheck, arrDNSServers(), k, blnDHCP

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
                    "!\\.\root\cimv2")
Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True")
Set wshArgs = WScript.Arguments

If wmiNICs.Count > 1 And wshArgs.Count > 1 Then
    strMAC = wshArgs(wshArgs.Count - 1)
    strMAC = UCase(Replace(strMAC, Mid(strMAC, 3, 1), ":"))
    For Each wmiNIC In wmiNICs
        If Not(IsNull(wmiNIC.MACAddress)) Then
            If wmiNIC.MACAddress = strMAC Then blnNIC = True
        End If
        If blnNIC Then Exit For
    Next
ElseIf wmiNICs.Count = 1 Then
    For Each wmiNIC In wmiNICs
        If Not(IsNull(wmiNIC.MACAddress)) Then
            strMAC = wmiNIC.MACAddress
            Exit For
        End If
    Next
End If
If Not(blnNIC) And IsEmpty(strMAC) Then
    WScript.Echo "Es wurde kein entsprechender Netzwerk-Adapter" & _
                 " gefunden!"
    WScript.Quit
End If

Set wmiNICs = wmi.ExecQuery(NICCFG & " where IPEnabled = True " & _
                            "and MACAddress = '" & strMAC & "'")

strVerb = GetNICDescription(strMAC)
If InStr(1, wshArgs(0), "dhcp", vbTextCompare) > 0 Then
    If AutoStartSvc("dhcp") Then blnDHCP = ActivateDHCP(wmiNICs)
Else
    Call StaticEnable(wshArgs, wmiNICs)
End If
Call PingTorweg(strMAC)

For k = 0 To wshArgs.Count - 1
    If InStr(1, wshArgs(k), "dns", vbTextCompare) > 0 Then
        blnCheck = True
        For j = k + 1 To wshArgs.Count - 1 + CInt(blnNIC)
            If IsNumeric(wshArgs(j)) Then
                If CheckServer(wshArgs(j), blnCheck) Then
                    WScript.Echo "Server " & wshArgs(j) & _
                                 " ist erreichbar."
                    ReDim Preserve arrDNSServers(i)
                    arrDNSServers(i) = wshArgs(j)
                    i = i + 1
                Else
                    WScript.Echo "Server " & wshArgs(j) & _
                                 " ist NICHT erreichbar."
                End If
                blnCheck = False
            End If
        Next
    End If
Next

If i > 0 Then
    For Each wmiNIC In wmiNICs
        wmiNIC.SetDNSServerSearchOrder(arrDNSServers)
    Next
End If

With CreateObject("WScript.Shell")
    With .Exec("ipconfig /all")
        Do Until .StdOut.AtEndOfStream
            WScript.StdOut.Write .StdOut.ReadAll
        Loop
    End With
    .PopUp "Konfiguration für " & strVerb & " abgeschlossen.", 60, _
           strVerb, vbInformation Or vbSystemModal
End With

Function GetNICDescription(strMAC)
    Dim wmiNIC, strConn

    For Each wmiNIC In wmi.ExecQuery("Select * from Win32_Network" & _
                        "Adapter where MACAddress = '" & strMAC & "'")
        If IsNull(wmiNIC.NetConnectionID) Then Exit For
        strConn = wmiNIC.NetConnectionID
        WScript.Echo vbCRLF & wmiNIC.ProductName & ":" & vbCRLF & _
              wmiNIC.AdapterType & " über """ & strConn & """" & vbCRLF
    Next

    GetNICDescription = strConn
End Function

Function ActivateDHCP(ByRef wmiNICCfg)
    Dim wmiNIC, blnSucceed

    For Each wmiNIC In wmiNICCfg
        If wmiNIC.DHCPEnabled Then
            WScript.Echo "DHCP war schon aktiviert, die Zuweisung " & _
                         "wird jetzt erneuert!"
            wmiNIC.RenewDHCPLease
            Exit For
        Else
            wmiNIC.SetDNSServerSearchOrder
        End If
        If wmiNIC.EnableDHCP = 0 Then
            WScript.Echo "DHCP wird nun aktiviert. Bitte warten!"
            blnSucceed = True
        Else
            WScript.Echo "Aktivierung von DHCP ist gescheitert."
        End If
    Next

    ActivateDHCP = blnSucceed
End Function

Sub StaticEnable(ByRef objArgs, ByRef wmiNICCfg)
    Dim strIP(3), wmiNIC, str, i

    For i = 0 To 1
        If IsNumeric(objArgs(i)) Then
            strIP(i) = Array(objArgs(i))
        End If
    Next
    strIP(2) = Array("255.255.255.0")

    For Each wmiNIC In wmiNICCfg
        If wmiNIC.DHCPEnabled Then
            str = vbCRLF & "DHCP-Zuweisung wurde aufgehoben." & vbCRLF
            Select Case wmiNIC.ReleaseDHCPLease
                Case 0:
                Case 1: str = str & "Windows-Neustart erforderlich."
                Case Else
                    str = "DHCP-Zuweisung kann nicht aufgehoben werden."
            End Select
            WScript.Echo str & vbCRLF
        End If
        If wmiNIC.EnableStatic(strIP(0), strIP(2)) = 0 Then
            WScript.Echo "Statische IP-Adresse wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung einer statischen IP-Adresse " & _
                         "misslungen."
        End If
        If wmiNIC.SetGateways(strIP(1), Array(1)) = 0 Then
            WScript.Echo "IP-Adresse für Gateway wurde zugewiesen."
        Else
            WScript.Echo "Zuweisung der IP-Adresse des Gateway " & _
                         "gescheitert."
        End If
    Next
End Sub

Function AutoStartSvc(strDienst)
    Dim wmiSvc, wmiServ

    For Each wmiSvc In SelectService(strDienst)
        If wmiSvc.StartMode <> "Auto" Then
            If wmiSvc.ChangeStartMode("Automatic") <> 0 Then
                WScript.Echo "Startmodus des " & wmiSvc.Name & _
                             "-Dienstes konnte nicht geändert werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do While wmiServ.StartMode <> "Auto"
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.StartMode
                        WScript.Sleep 1000
                    Loop
                    WScript.Echo wmiServ.Name & "-Dienst wurde auf" & _
                                 " automatischen Start gesetzt."
                Next
            End If
        End If
        If Not(wmiSvc.Started) Then
            If wmiSvc.StartService <> 0 Then
                WScript.Echo "Der Dienst " & wmiSvc.Name & _
                             " kann nicht gestartet werden."
            Else
                For Each wmiServ In SelectService(strDienst)
                    Do
                        WScript.Echo wmiServ.Name & ": " & _
                                     wmiServ.State
                        WScript.Sleep 1000
                    Loop Until wmiServ.Started
                Next
                WScript.Echo wmiSvc.Name & "-Dienst wurde gestartet."
            End If
        End If
    Next
    For Each wmiSvc In SelectService(strDienst)
        AutoStartSvc = wmiSvc.Started
    Next
End Function

Function SelectService(strSvc)
    Set SelectService = wmi.ExecQuery("Select * from Win32_Service" & _
                                      " where Name = '" & strSvc & "'")
End Function

Sub PingTorweg(strMAC)
    Dim wmiNIC, i, x

    Do
        For Each wmiNIC In wmi.ExecQuery(NICCFG & " where IPEnabled" & _
                           " = True and MACAddress = '" & strMAC & "'")
            If IsNull(wmiNIC.DefaultIPGateway) Then Exit For
            For i = 0 To UBound(wmiNIC.DefaultIPGateway)
                Do Until Ping(wmiNIC.DefaultIPGateway(i))
                    If x >= 5 Then
                        WScript.Echo "Gateway ist nicht erreichbar."
                        Exit Do
                    End If
                    WScript.Sleep 1000
                    x = x + 1
                Loop
                Exit Do
            Next
        Next
        WScript.Sleep 1000
    Loop
End Sub

Function CheckServer(strTarget, blnRetry)
    Dim wmiPing, i, blnPong, blnFirst

    If Not(blnRetry) Then
        WScript.Echo vbCRLF & "Teste Server " & strTarget & _
                                        " auf Erreichbarkeit."
    End If
    For i = 0 To 2
        For Each wmiPing In wmi.ExecQuery("select * from " & _
                "Win32_PingStatus where ResolveAddressNames = True" & _
                " and Address = '" & strTarget & "'")
            If blnRetry Then
                WScript.Sleep 1000  ' wenn der Router offline ist
                CheckServer = CheckServer(strTarget, False)
                Exit Function
            End If
            If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
            blnPong = CBool(wmiPing.StatusCode = 0)
            If Not(blnFirst) Then
                blnFirst = True
                If Not(blnPong) Then
                    WScript.Echo GetError(wmiPing.StatusCode)
                End If
                Wscript.Echo vbCRLF & wmiPing.Address & " [" & _
                wmiPing.ProtocolAddressResolved & "] erwidert ICMP:"
                WScript.StdOut.Write "Antwortzeiten:    "
            End If
            If blnPong Then
                WScript.StdOut.Write wmiPing.ResponseTime & "    "
            Else
                WScript.StdOut.Write " *    "
            End If
        Next
        WScript.Sleep 200
    Next
    If blnPong Then WScript.StdOut.Write " ms"
    WScript.Echo

    CheckServer = blnPong
End Function

Function Ping(strIPAdd)
    Dim wmiPing, blnPong

    For Each wmiPing In wmi.ExecQuery("select * from " & _
            "Win32_PingStatus where Address = '" & strIPAdd & "'")
        If IsNull(wmiPing.StatusCode) Then blnPong = False: Exit For
        blnPong = CBool(wmiPing.StatusCode = 0)
        If Not(blnPong) Then
            WScript.Echo GetError(wmiPing.StatusCode)
        End If
    Next

    Ping = blnPong
End Function

Function GetError(intNumber)
    Dim arr

    arr = Array("Success", "Buffer Too Small", "Destination Net " & _
          "Unreachable", "Destination Host Unreachable", _
          "Destination Protocol Unreachable", "Destination Port " & _
          "Unreachable", "No Resources", "Bad Option", "Hardware " & _
          "Error", "Packet Too Big", "Request Timed Out", _
          "Bad Request", "Bad Route", "TimeToLive Expired Transit", _
          "TimeToLive Expired Reassembly", "Parameter Problem", _
          "Source Quench", "Option Too Big", "Bad Destination")
    ReDim Preserve arr(50)
    arr(32) = "Negotiating IPSEC": arr(50) = "General Failure"

    GetError = vbCRLF & "ICMP-Error " & intNumber & ": " & _
               arr(intNumber - 11000) & vbCRLF
End Function
'########################### AssIPAdd.vbs #############################

Selbstverständlich wird keine Gewährleistung für das korrekte
Funktionieren des Skripts auf fremden Rechnern übernommen.

-- 
ЯR
Datum: Sat, 15 Aug 2009 15:43:01 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Rüdiger Rösler schrieb:

> '########################### AssIPAdd.vbs #############################
> '                           von h.r.roesler
> ' Skript zur Zuweisung einer statischen IP-Adresse für NIC oder zum
> ' Einschalten von DHCP.

netsh.exe set address

> ' Es können beliebig viele DNS-Server angegeben werden.

netsh.exe set,add,del dns

Siehe auch http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx


mfG Paul
Datum: Mon, 17 Aug 2009 19:41:16 +0200   Autor:   Paul Muster

Re: Umschalten auf verschiedene IP-Adressen   
Paul Muster  typed:

> netsh.exe set address

Jau, das wäre viel einfacher, macht aber nicht soviel Spaß und ist nicht
so flexibel. lol Es sollte jedoch noch ein *interface* *ip* vor set
eingesetzt werden, damit es auch funktioniert:
netsh interface ip set address

| C:\>netsh interface ip show ipaddress
|
| Der Routing- und RAS-Dienst wird auf dem lokalen Computer zurzeit
| nicht ausgeführt. Führen Sie "net start remoteaccess" aus, um den
| Dienst zu starten.

Ich bin leider etwas misstrauisch gegenüber dem Routing- und RAS-Dienst.

> netsh.exe set,add,del dns

netsh interface ip set, add, del dns

Die Syntax dieses Befehls ist etwas gewöhnungsbedürftig und ist nicht so
gut dokumentiert.

> Siehe auch
> http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx

Da steht's auch:
hh.exe ms-its:ntcmds.chm::/netsh_int_ip.htm

-- 
ЯR
Datum: Mon, 17 Aug 2009 21:11:17 +0200   Autor:   Rüdiger Rösler

Re: Umschalten auf verschiedene IP-Adressen   
Rüdiger Rösler schrieb:
> Paul Muster  typed:

>> netsh.exe set address
> 
> Jau, das wäre viel einfacher, macht aber nicht soviel Spaß und ist nicht
> so flexibel. lol Es sollte jedoch noch ein *interface* *ip* vor set
> eingesetzt werden, damit es auch funktioniert:
> netsh interface ip set address

Ah, ok. Hatte keine Windows-Installation zum Testen da.

> | C:\>netsh interface ip show ipaddress
> |
> | Der Routing- und RAS-Dienst wird auf dem lokalen Computer zurzeit
> | nicht ausgeführt. Führen Sie "net start remoteaccess" aus, um den
> | Dienst zu starten.
> 
> Ich bin leider etwas misstrauisch gegenüber dem Routing- und RAS-Dienst.

Aha. "Ich vertraue meinem linken Hinterrad nicht." Naja, jeder, wie er mag.

>> netsh.exe set,add,del dns
> 
> netsh interface ip set, add, del dns
> 
> Die Syntax dieses Befehls ist etwas gewöhnungsbedürftig und ist nicht so
> gut dokumentiert.

Nix gegen dein Skript, aber die VB-Syntax ist fünfmal
gewöhnungsbedürftiger. Bevor ist mich mit solchen Dingen wie

Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
                    "!\\.\root\cimv2")

auseinandersetze (und das muss ich, wenn ich dein Skript verwenden
wollte, weil ich keine unverstandenen fremden Skripte auf meinen Kisten
laufen lasse), habe ich die komplette Syntax von sämtlichen Parametern
von netsh.exe durch. (Nein, mich interessiert nicht wirklich, was deine
Zeile tut, brauchst du also nicht erklären.)

>> Siehe auch
>> http://technet.microsoft.com/de-de/library/cc738592(WS.10).aspx
> 
> Da steht's auch:
> hh.exe ms-its:ntcmds.chm::/netsh_int_ip.htm

Na wunderbar.


mfG Paul
Datum: Tue, 18 Aug 2009 07:15:14 +0200   Autor:   Paul Muster

Re: Umschalten auf verschiedene IP-Adressen   
Paul Muster  typed:

>> Ich bin leider etwas misstrauisch gegenüber dem Routing- und
>> RAS-Dienst.
>
> Aha. "Ich vertraue meinem linken Hinterrad nicht." Naja, jeder, wie
> er mag.

Nein, es ist nicht das linke Hinterrad, es ist der zuschaltbare
Allradantrieb. Der sollte nur benutzt werden, wenn er wirklich gebraucht
wird.

> Nix gegen dein Skript, aber die VB-Syntax ist fünfmal
> gewöhnungsbedürftiger. Bevor ist mich mit solchen Dingen wie
>
> Set wmi = GetObject("winmgmts:{impersonationLevel=impersonate}" & _
>                    "!\\.\root\cimv2")
>
> auseinandersetze (und das muss ich, wenn ich dein Skript verwenden
> wollte, weil ich keine unverstandenen fremden Skripte auf meinen
> Kisten laufen lasse), habe ich die komplette Syntax von sämtlichen
> Parametern  von netsh.exe durch.

Du kannst das Ganze natürlich auch als Batch realisieren. Diese Sprache
ist unter Windows aber noch komplizierter und fehleranfälliger, das
wollte ich damit sagen. VBScript ist für einen Außenstehenden logisch
leichter nachzuvollziehen, und die WMI läuft im Hintergrund sowieso
immer mit. Wenn es richtig formatiert wird, ist VBScript auch leichter
zu warten und besitzt mehr Möglichkeiten.

Dieses Skript zeigt den Namensraum der auf einem Windowssystem
installierten und im Hintergrund mitlaufenden WMI an:

'############################# Space.vbs ##############################
' Skript zur Anzeige aller Namensräume der WMI.
' Dieses Skript sollte *nur* mit *CScript* als /Host/ in der
' _Eingabeaufforderung_ ausgeführt werden:
' CScript <Pfad>\Space.vbs
' Wer dieses Skript ausführt, kommt in die Hölle. Oder er ist es schon.
' This script is prohibited for Lunix-Looser! SeBigBoss
Option Explicit

Const NSPACE = "__NAMESPACE", ROOT = "\\.\Root"
Dim wmi, wmiNameSpace

Set wmi = GetObject("winmgmts:" & ROOT)

WScript.Echo vbCRLF & "These are the top namespaces:"
For Each wmiNameSpace In wmi.InstancesOf(NSPACE)
     WScript.Echo Space(10) & wmiNameSpace.Name
Next
WScript.Echo vbCRLF & "Follow soon in the infinite depth of Gates:"
WScript.Sleep 10000

WScript.Echo vbCRLF & "There were " & Numsi(ROOT) & " Classes found."

Function Numsi(strPaNameSpace)  ' Rekursion durch die Namensräume
    Dim wmi, wmiClass, wmiNameSpace, str, i

    Set wmi = GetObject("winmgmts:" & strPaNameSpace)

    For Each wmiNameSpace In wmi.Execquery("select * from " & NSPACE)
        str = wmiNameSpace.Path_.Namespace & "\" & wmiNameSpace.Name
        WScript.Echo vbCRLF & str & ":"
        For Each wmiClass In GetObject("winmgmts:" & str).SubclassesOf
            WScript.Echo Space(4) & wmiClass.Path_.Relpath
            i = i + 1
        Next
        i = i + Numsi(str)
    Next

    Numsi = i
End Function
'############################ Space.vbs ###############################

*Creating a WMI Script*
http://msdn.microsoft.com/en-us/library/aa389763%28VS.85%29.aspx

*Constructing a Moniker String*
http://msdn.microsoft.com/en-us/library/aa389292%28VS.85%29.aspx

-- 
ЯR
Datum: Tue, 18 Aug 2009 12:24:38 +0200   Autor:   Rüdiger Rösler



    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   Kontakt