Jump to content

Netsh Befehl funktioniert nicht richtig. Oder?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

eigentlich sollte :) der Befehl

netsh interface ip show interface

einige Informationen über installierte und aktive Netzwerkadapter liefern. So Microsoft.

 

Aber bei Versuchen auf mehreren Rechnern diese Informationen zu kriegen bekomme ich immer nur die Meldung, dass RRAS auf dem lokalen Computer zur Zeit nicht ausgeführt ist, was eigentlich stimmt. Die Empfehlung diesen Dienst über " net start remoteaccess" zu starten bringt mich nicht wieter, da das mit meiner Aufgabe gar nichts zu tun hat. :rolleyes:

 

So meine Frage: Habe ich die Erklärung zu diesem Befehl in diesem netsh-Kontext richtig verstanden :suspect: oder verbirgt was sich hinter der MS-Gedanken? :cry:

Link zu diesem Kommentar

Es sollte so was ausgegeben werden:

 

MIB-II Interface Information

--------------------------------

Index: 65539

User-friendly Name: Local Area Connection

GUID Name: {BG333345-F234-4335-25FB-43D3456B4464}

Type: Ethernet

MTU: 1500

...

 

 

und noch ein paar Dutzend Zeilen

 

 

Mich interessieren die zwei Zeilen: GUID Name und Physical Address

 

 

Statt dessen kriege ich nur RRAS-Meldung

Link zu diesem Kommentar
Hallo varnik,

 

netsh interface ip show interface

geht nur wenn der Routing and Remote Access Service gestartet ist.

 

thorgood

 

Hallo thorgood,

 

genau das habe ich festgestellt. Mir ist aber wichtig, den GUID Name (den Namen, unter dem in der Registry die aktive Netzwerkkarte eingetragen ist) rauszufinden, da ich manche Einstellungen direkt in der Registry vornehmen möchte, die von jedem Windows-Befehl als ungültige betrachtet werden. Und den RRAS-Dienst kann ich nur auf einem Server installieren und starten. Ich möchte aber WindowsXP-Rechner umkonfigurieren.

Ich brauche die IP-Adresse, die Subnetzmaske auf einen ungültigen Wert umzustellen, um einen möglichen IP-Adressen-Konflikt mit 100% zu vermeiden. Da bei uns verschiedene Rechner eingesetzt sind, versteckt sich die jeweilige Netzwerkkarte hinter so einem komischen Namen in der Registry. Bis jetzt musste ich den Eintrag in der Registry manuell suchen und einstellen. Aber der Mensch ist ein faules Tier. :D

Link zu diesem Kommentar

Ausgehend von der Üerlegung das eine Workstation in aller Regel nur einen TCP-Adapter installiert hat, suchst du per Script einfach nach

DNSRegisteredAdapters in der Reg. Damit hast du deine GUID als Variable die du

dann in weiteren Steps benutzen kannst, völlig unabhängig.

Sollte dennoch ein weiterer Adapter installiert sein, dann beziehe den Index mit in deine Überlegungen, der kleinere Index sollte der erste aktive Adapter sein.

 

Für die DNSRegisteredAdapters

Link zu diesem Kommentar

Hast du WMI schon probiert

 

Beispiel (NIC.VBS):

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
 WScript.Echo VbCrLf & "Index: " & objNicConfig.Index & _
              VbCrLf & "Descr: " & objNicConfig.Description & _
              VbCrLf & "Mac  : " & objNicConfig.MacAddress & _
              VbCrLf & "SetID: " & objNicConfig.SettingID & _
              VbCrLf & "IpAdr: " & objNicConfig.IPAddress(0)
Next

 

thorgood

Link zu diesem Kommentar

Allen einen schönen guten Morgen und besten Dank an thorgood.

Das Skript habe ich meinen Wünschen angepasst

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & 

strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM 

Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
 WScript.Echo  VbCrLf & "SetID: " & objNicConfig.SettingID(0)
Next

und rufe dies aus meinem Skript auf.

@echo off
for /f "tokens=2 skip=4 delims=:" %%i in ('cscript nic.vbs') do set adapter=%%i & 

goto out >nul
:out
echo %adapter%
pause

Jetzt kann ich weiter machen.

Danke!

Link zu diesem Kommentar

"Jetzt kann ich witer machen", habe ich gedacht. :)

Leider fügt die Kommandozeile der Variable zusätzliche Leerzeichen vorn und hinten hinzu.

Das Vordere habe ich mit einem Leerzeichen als "delim"-Eintrag gelöscht

@echo off
for /f "tokens=2 skip=4 delims=: " %%i in ('cscript nic.vbs') do set adapter=%%i & 

goto out >nul
:out
echo %adapter%
pause

Das Hintere bleibt aber vorhanden. :confused:

Der Befehl

reg add "hklm\system\currentcontrolset\services\tcpip\parameters\interfaces\%adapter%" /v "test" /t REG_SZ /d 0.0.0.0

erstellt einen neuen Schlüssel mit einem Leerzeichen hinter dem gewünschten Namen statt in einem vorhandenen Schlüssel einen Testwert zu erstellen.

Wie kriege ich das Leerzeichen weg? :cry: :D

Link zu diesem Kommentar
Hier der Rest vom Thread aus dem Thorgood zitiert hat WMI und NIC

 

Du möchtest wohl das vbcrlf rausnehmen?

Ich möchte die Ausgabe vom angepassten .vbs Skript von thorgood als Variable an mein Skript übergeben. Doch erscheinen neben dem ausgegebenen Wert

{BG333345-F234-4335-25FB-43D3456B4464}

vorn und hinten die Leerzeichen, die ich unten durch Unterstriche ersetzt habe

_{BG333345-F234-4335-25FB-43D3456B4464}_

 

Deswegen landen meine reg-Befehle an eine falsche Stelle. Statt in einem vorhandenen

{BG333345-F234-4335-25FB-43D3456B4464} - Schlüssel einen Wert zu ändern erstellt mein Skript einen neuen Schlüssel

_{BG333345-F234-4335-25FB-43D3456B4464}_

mit dem gewünschten Wert. (Unterstriche ersetzen die Leerzeichen für bessere Ansicht.)

 

Das erste Leerzeichen kann ich ausfiltern. Das hintere leider nicht. :confused:

Link zu diesem Kommentar
was hälst du von Trim(variable) (vbs befehl) bzw für rechtes leerzeiuchen RTrim(variable) und für linkes LTrim(variable)

Bin wie gesagt kein Programmierer und erstelle mir nur die einfachsten Skripte, die mir etwas Zeit sparen können. Mit dieser Aufgabe bin ich überfordert. Könntest du evtl. ein bisschen erläutern, was ein Trim ist. :confused:

Link zu diesem Kommentar

Entweder

 

@echo off
for /f "tokens=2 skip=4 delims=: " %%i in ('cscript nic.vbs') do call :out %%i
:out
echo _%*_
pause
exit

 

oder gleich im VBScript die Registryeinträge vornehmen

 

On Error Resume Next

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
   WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\" & objNicConfig.SettingID(0) & "\test", "0.0.0.0", "REG_SZ"
Next

 

thorgood

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...