ich will die ip angezeigt bekommen die man von ipconfig /all kennt
da steht weiter unten DNS-Server: 192.168.000.000
gibt es zufällig eine Funktion integriert in Autoit die ich nicht gefunden habe
ich will die ip angezeigt bekommen die man von ipconfig /all kennt
da steht weiter unten DNS-Server: 192.168.000.000
gibt es zufällig eine Funktion integriert in Autoit die ich nicht gefunden habe
AutoIt bietet keine internen Methoden dafür, du kannst allerdings die Google Suche verwenden und direkt Resultate finden.
Du kannst aber auch die Standardausgabe von ipconfig /all lesen und dann parsen.
da steht weiter unten DNS-Server: 192.168.000.000
Das steht da garantiert nicht!
192.168.0.1 - ja, das kann...
Willst du tatsächlich den DNS-Server oder aber deine lokale IP haben? Dafür hätte ich ein Script.
Das steht da garantiert nicht!
Ich denke er hätte es wie 192.168.xxx.xxx gemeint.
Willst du tatsächlich den DNS-Server oder aber deine lokale IP haben? Dafür hätte ich ein Script.
@IPAddress1
@IPAddress1
Das ist sehr unzuverlässig, denn diese Makros liefern die IP-Adressen der ersten vier vorhandenen Netzwerk-Adaper... welche davon dann die lokale IP ist, bleibt dann zu raten.
Deshalb mache ich es lieber so...
Das ist sehr unzuverlässig, denn diese Makros liefern die IP-Adressen der ersten vier vorhandenen Netzwerk-Adaper... welche davon dann die lokale IP ist, bleibt dann zu raten.
Meistens hat man nur einen Adapter installiert, sollte man trotzdem zwei oder mehrere haben ist es meistens trotzdem @IPAddress1.
Ansonsten kannst du prüfen ob die leer ist und dann die nächste nehmen, das ist zumindest die schnellste und einfachste Variante.
Hab in meinem System auch mehrere Adapter gehabt (physische sowie emulierte) und nie Probleme gehabt.
Mit Verlaub wie steht es damit:
ipconfig /all > F:\1.txt
Das Textfile kann man dann mit autoit nach allen Regeln der Kunst auseinandernehmen oder auch zusammensetzen ?
Im Zweifel bekommt man eben die Adressen aller Adapter....
Gruß
Peter
Mit Verlaub wie steht es damit:
ipconfig /all > F:\1.txt
Du kannst aber auch die Standardausgabe von ipconfig /all lesen und dann parsen.
Ob ich jetzt in eine Datei schreibe oder mit StdOutRead lese spielt glaube ich keine Rolle.
Hallo alpines
ich habe mit @IPAddress1 schon häufiger Probleme gehabt. Aktuell etwa belegt eine VPN Software diesen Platz..
Hier gibt es auch noch ein paar schöne Methoden dazu von UEZ und Micha_he: Zuverlässig eigene IP auslesen?
ich habe mit @IPAddress1 schon häufiger Probleme gehabt. Aktuell etwa belegt eine VPN Software diesen Platz..
Selbst bei VPNs hatte ich das Problem nicht, naja, kopiert man sich eine UDF rein ist ja halb so wild.
Auf Basis der damaligen Idee nach niedrigster Metric zu wählen, hier eine WMI-Variante für die DNS-Einträge:
MsgBox(0,"Low Metric DNS", _LowMetricAllDNS())
Func _LowMetricAllDNS($sHost = ".")
Local $objAdapter, $iMetric = 500, $sDNS
Local $EachDNS
Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2")
If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
Local $colAdapter = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30)
If IsObj($colAdapter) Then
For $objAdapter In $colAdapter
If $objAdapter.IPConnectionMetric < $iMetric Then
$sDNS = ""
If IsArray($objAdapter.DNSServerSearchOrder) Then
For $EachDNS In $objAdapter.DNSServerSearchOrder
$sDNS &= $EachDNS & "|"
Next
$sDNS = StringTrimRight($sDNS, 1)
$iMetric = $objAdapter.IPConnectionMetric
EndIF
EndIf
Next
If $sDNS Then Return $sDNS
EndIf
Return SetError(2, 0, 0)
EndFunc
Alles anzeigen
Auf Basis der damaligen Idee nach niedrigster Metric zu wählen, hier eine WMI-Variante für die DNS-Einträge:
AutoIt Alles anzeigenMsgBox(0,"Low Metric DNS", _LowMetricAllDNS()) Func _LowMetricAllDNS($sHost = ".") Local $objAdapter, $iMetric = 500, $sDNS Local $EachDNS Local $objWMIService = ObjGet("winmgmts:{impersonationLevel = impersonate}!\\" & $sHost & "\root\cimv2") If Not IsObj($objWMIService) Then Return SetError(1, 0, 0) Local $colAdapter = $objWMIService.ExecQuery("Select * From Win32_NetworkAdapterConfiguration WHERE IPEnabled = True", "WQL", 0x30) If IsObj($colAdapter) Then For $objAdapter In $colAdapter If $objAdapter.IPConnectionMetric < $iMetric Then $sDNS = "" If IsArray($objAdapter.DNSServerSearchOrder) Then For $EachDNS In $objAdapter.DNSServerSearchOrder $sDNS &= $EachDNS & "|" Next $sDNS = StringTrimRight($sDNS, 1) $iMetric = $objAdapter.IPConnectionMetric EndIF EndIf Next If $sDNS Then Return $sDNS EndIf Return SetError(2, 0, 0) EndFunc
Vielen Dank für deine Mühe. Genau das wollte ich
Auf dieser Seite wird sehr gut erklärt, nach welchen Regeln den verschiedenen Adaptern eine Metric zugewiesen wird.
Hier noch zwei Varianten, um die lokalen IPs zu ermitteln:
Local $iPID = Run('powershell.exe ipconfig | sls "ipv4"', '', @SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($iPID)
$aIP = StringRegExp(StdoutRead($iPID), '(?:.+:)(.+)', 3)
_ArrayDisplay($aIP, 'powershell - $aIP')
$iPID = Run('ipconfig.exe /all', '', @SW_HIDE, $STDOUT_CHILD)
ProcessWaitClose($iPID)
$aIP = StringRegExp(StdoutRead($iPID), '(?:IPv4.+: )(.+)(?:\(.+)', 3)
_ArrayDisplay($aIP, 'ipconfig - $aIP')