Wincc: IP-Adresse ermitteln, oder backticks

Drutbluck

Level-1
Beiträge
68
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

eine WinCC-Runtime soll (vorzugsweise) die IP-Adresse des PCs ermitteln, auf dem sie läuft. Alternativ auch eine MAC-Adresse, oder sonst ein eindeutiges Merkmal.

Meine erste Idee wäre, ipconfig zu starten. Da kenne ich aber keine Möglichkeit, die Ausgabe von ipconfig zurückzugewinnen (wie es mit Computer-Skriptsprachen möglich ist).

Kennt hier jemand eine Lösung dafür? IP-Adresse ermitteln oder Ausgabe eines Systembefehls einlesen, möglichst ohne temporäre Dateien?

Vielen Dank
 
Dies habe ich auf Microsoft Tech Net gefunden.
Muss natürlich für WinCC Flexible etwas angepasset werden:

Code:
Option ExplicitDim objFSO, wshShell, textFile
Dim outfile
Dim hostNames, hostName, wmi, results, result


On Error Resume Next 


  Set objFSO  = CreateObject("Scripting.FileSystemObject") 
  Set wshShell = wscript.createObject("wscript.shell") 
  Set textFile = objFSO.OpenTextFile("Computers.txt") 


  hostNames  = Split(textFile.ReadAll, vbNewLine) 


  textFile.Close


  set outfile = objFSO.OpenTextFile("output.txt",2,true)
  For Each hostName In hostNames
   Do
     Set wmi   = GetObject("winmgmts:\\" & hostName & "\root\CIMV2") 
     Set results = wmi.ExecQuery("Select * From Win32_NetworkAdapterConfiguration",,48)
     If Err.Number <> 0 Then
      MsgBox hostName & ". Error " & Err.Number & " (Hex " & Hex(Err.Number) & "). " & Err.Description, vbCritical
      Exit Do
     End If


     For Each result in results 
      If Not isNull(result.DNSHostName) Then 
        outfile.writeline "DNS Host Name: "& result.DNSHostName 
        outfile.writeline "Description: "  & result.Description
        outfile.writeline "IP Address: "   & Join(result.IPAddress, ",")
        outfile.writeline "Default Gateway: "   & Join(result.DefaultIPgateway, ",")
        outfile.writeline "IP Subnet: "    & Join(result.IPSubnet, ",")
        outfile.writeline "DNS Server Search Order: " & Join(result.DNSServerSearchOrder, " , ")
      End If 
     Next


   Loop Until True
  Next


On Error Goto 0

OBS. Wegen Wscript.shell werden alle andere VBS Skripte angehalten wenn diese Skript läuft !!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, das sieht sehr gut aus. (Muss nur noch funktionieren)

Die möglichen/zulässigen Hostnames können aus Projektdaten ermittelt werden.

der hier hilfreiche Teil des Codes:

Code:
  For Each hostName In hostNames
   Do
     Set wmi   = GetObject("winmgmts:\\" & hostName & "\root\CIMV2") 
     Set results = wmi.ExecQuery("Select * From Win32_NetworkAdapterConfiguration",,48)
     If Err.Number <> 0 Then
      ' gilt nicht
     End If


     For Each result in results 
      If Not isNull(result.DNSHostName) Then 
        outfile.writeline "DNS Host Name: "& result.DNSHostName 
        outfile.writeline "Description: "  & result.Description
        outfile.writeline "IP Address: "   & Join(result.IPAddress, ",")
        outfile.writeline "Default Gateway: "   & Join(result.DefaultIPgateway, ",")
        outfile.writeline "IP Subnet: "    & Join(result.IPSubnet, ",")
        outfile.writeline "DNS Server Search Order: " & Join(result.DNSServerSearchOrder, " , ")
      End If 
     Next


   Loop Until True
  Next

OBS. Wegen Wscript.shell werden alle andere VBS Skripte angehalten wenn diese Skript läuft !!

Dann darf es nur 1x beim Start laufen.
 
Ändert der Host-PC auf dem die Runtime läuft oft seine IP-Adresse?
Alternativ könnte die IP-Adresse auch fest im Projekt in einer Variable oder in einer Datei gespeichert werden.

Um welche WinCC-Version geht es genau? Welches Host-Betriebssystem?

[Nachtrag]
Wenn ich mehrere WinCCflexible Panels mit identischem Projekt verwende, dann speichere ich einmalig eine ini/txt-Datei mit eindeutiger Stationsbezeichnung auf dem Panel. Diese Datei lese ich beim Runtime-Start.

Harald
 
Zuletzt bearbeitet:
eine WinCC-Runtime soll (vorzugsweise) die IP-Adresse des PCs ermitteln, auf dem sie läuft. Alternativ auch eine MAC-Adresse, oder sonst ein eindeutiges Merkmal.

Ändert der Host-PC auf dem die Runtime läuft oft seine IP-Adresse?
Alternativ könnte die IP-Adresse auch fest im Projekt in einer Variable oder in einer Datei gespeichert werden.

Ich vermute es geht um einen WinCC-Kopierschutz...
 
Es geht darum, dass es mehrere HMIs gibt, die sich nur geringfügig unterschiedlich verhalten sollen. Bisher wurden dafür immer entsprechend viele Kopien angelegt. Ich suche bei Gelegenheit einen Weg, das rückgängig zu machen.
 
Zurück
Oben