Batch - Port eines Programmes finden und in Variable übergeben
Hallo und einen wunderschönen guten Abend,
gibt es eine Möglichkeit mit Hilfe einer Batch-Datei (Win10) den Port eines Programmes zu finden und in eine Variable zu übergeben?
Mit folgendem Schnipsel schaffe ich es zumindest schon mal nach firefox.exe in der netstat-Ausgabe zu suchen.
Leider steht der Port in der nachfolgenden Zeile. Ich versuche den Port z.B. von firefox.exe in die Variable $Port zu übergeben, damit ich mit dieser Information weiter arbeiten kann.
Könnte mir hier jemand unter die Arme greifen??
Danke und Grüße I.
gibt es eine Möglichkeit mit Hilfe einer Batch-Datei (Win10) den Port eines Programmes zu finden und in eine Variable zu übergeben?
Mit folgendem Schnipsel schaffe ich es zumindest schon mal nach firefox.exe in der netstat-Ausgabe zu suchen.
netstat -nb | findstr /s /i firefox.exe
Leider steht der Port in der nachfolgenden Zeile. Ich versuche den Port z.B. von firefox.exe in die Variable $Port zu übergeben, damit ich mit dieser Information weiter arbeiten kann.
Könnte mir hier jemand unter die Arme greifen??
Danke und Grüße I.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 561102
Url: https://administrator.de/contentid/561102
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
19 Kommentare
Neuester Kommentar
Moin,
was auch immer Du da machen willst, mache es mit Powershell. Danke für die Frage. Ich habe das hier gefunden:
https://lazywinadmin.com/2011/02/how-to-find-running-processes-and-their ...
Leider sind da Typos in dem Quellcode. Deshalb hier nochmal korrigiert:
Das ist die Ausgabe:
Toll! Gefällt mir. Das kannst Du dann z. B. so weiterverarbeiten:
hth
Erik
was auch immer Du da machen willst, mache es mit Powershell. Danke für die Frage. Ich habe das hier gefunden:
https://lazywinadmin.com/2011/02/how-to-find-running-processes-and-their ...
Leider sind da Typos in dem Quellcode. Deshalb hier nochmal korrigiert:
function Get-NetworkStatistics
{
$properties = 'Protocol','LocalAddress','LocalPort'
$properties += 'RemoteAddress','RemotePort','State','ProcessName','PID'
netstat -ano |Select-String -Pattern '\s+(TCP|UDP)' | ForEach-Object {
$item = $_.line.split(" ",[System.StringSplitOptions]::RemoveEmptyEntries)
if($item[1] -notmatch '^\[::')
{
if (($la = $item[1] -as [ipaddress]).AddressFamily -eq 'InterNetworkV6')
{
$localAddress = $la.IPAddressToString
$localPort = $item[1].split('\]:')[-1]
}
else
{
$localAddress = $item[1].split(':')
$localPort = $item[1].split(':')[-1]
}
if (($ra = $item[2] -as [ipaddress]).AddressFamily -eq 'InterNetworkV6')
{
$remoteAddress = $ra.IPAddressToString
$remotePort = $item[2].split('\]:')[-1]
}
else
{
$remoteAddress = $item[2].split(':')
$remotePort = $item[2].split(':')[-1]
}
New-Object PSObject -Property @{
PID = $item[-1]
ProcessName = (Get-Process -Id $item[-1] -ErrorAction SilentlyContinue).Name
Protocol = $item
LocalAddress = $localAddress
LocalPort = $localPort
RemoteAddress =$remoteAddress
RemotePort = $remotePort
State = if($item -eq 'tcp') {$item[3]} else {$null}
} |Select-Object -Property $properties
}
}
}
Das ist die Ausgabe:
PS C:\WINDOWS\system32> Get-NetworkStatistics | ?{$_.processname -like "*firefox*"} |format-table
Protocol LocalAddress LocalPort RemoteAddress RemotePort State ProcessName PID
-------- ------------ --------- ------------- ---------- ----- ----------- ---
TCP 127.0.0.1 52766 127.0.0.1 52767 HERGESTELLT firefox 11652
TCP 127.0.0.1 52767 127.0.0.1 52766 HERGESTELLT firefox 11652
TCP 127.0.0.1 53111 127.0.0.1 53112 HERGESTELLT firefox 10340
TCP 127.0.0.1 53112 127.0.0.1 53111 HERGESTELLT firefox 10340
TCP 127.0.0.1 54405 127.0.0.1 54406 HERGESTELLT firefox 9152
TCP 127.0.0.1 54406 127.0.0.1 54405 HERGESTELLT firefox 9152
TCP 127.0.0.1 54411 127.0.0.1 54412 HERGESTELLT firefox 4276
TCP 127.0.0.1 54412 127.0.0.1 54411 HERGESTELLT firefox 4276
TCP 127.0.0.1 58471 127.0.0.1 58472 HERGESTELLT firefox 12268
TCP 127.0.0.1 58472 127.0.0.1 58471 HERGESTELLT firefox 12268
TCP 127.0.0.1 58473 127.0.0.1 58474 HERGESTELLT firefox 6516
TCP 127.0.0.1 58474 127.0.0.1 58473 HERGESTELLT firefox 6516
TCP 127.0.0.1 58478 127.0.0.1 58479 HERGESTELLT firefox 10264
TCP 127.0.0.1 58479 127.0.0.1 58478 HERGESTELLT firefox 10264
TCP 192.168.178.23 58492 34.213.211.99 443 HERGESTELLT firefox 12268
Toll! Gefällt mir. Das kannst Du dann z. B. so weiterverarbeiten:
$firefox_ports = $(get-networkstatistics | where-object{$_.processname -like *firefox*})
foreach($port in $firefox_ports) {
#wasimmer Du damit anstellen willst.
}
hth
Erik
Moin,
Du kannst aus einem Batch heraus ein PS-Skript starten und umgekehrt aus der PS ein Batch. Beim Start kannst Du auch Variablen übergeben. Bei der Aufgabenstellung tendiere ich dazu, das Batch aus der PS heraus zu starten. Ich würde aber immer überlegen, das Ganze in PS zu überführen. Spätestens bei der nächsten Änderung wirst Du froh sein. Batch ist sowas von ekelig. Da programmiere ich doch lieber in Assembler.
Liebe Grüße
Erik
Du kannst aus einem Batch heraus ein PS-Skript starten und umgekehrt aus der PS ein Batch. Beim Start kannst Du auch Variablen übergeben. Bei der Aufgabenstellung tendiere ich dazu, das Batch aus der PS heraus zu starten. Ich würde aber immer überlegen, das Ganze in PS zu überführen. Spätestens bei der nächsten Änderung wirst Du froh sein. Batch ist sowas von ekelig. Da programmiere ich doch lieber in Assembler.
Liebe Grüße
Erik
Hi.
Das beruht ja auf meinem Wissensbeitrag.
Ich werde meinen Wissensbeitrag anpassen müssen, denn es ist ein Fehler drin: Port 445 muss am Remoterechner zum Supporter hin offen sein. In meinen Tests muss ich einen Fehler gemacht haben. Ist das evtl. dein Problem? Ich habe noch einmal getestet: wenn 445 nicht erreichbar ist, bekommt der Supporter bei mir "This computername is invalid".
Bei deinem "variablen Port"redest Du ja über die Highports, die von der rdpsa.exe geöffnet werden. Diese werden erst dann geöffnet, wenn der Hilfesuchende die Verbindungsanfrage bereits angenommen hat. Sie werden auch nach beenden der Verbindung sofort wieder geschlossen. Dein Plan kann also nicht gelingen.
Prüfe bitte, ob 445 offen ist und wenn nicht, ob es nach Öffnen geht. Du musst wohl oder übel für Euer VPN auch alle Highports zulassen.
Das beruht ja auf meinem Wissensbeitrag.
Ich werde meinen Wissensbeitrag anpassen müssen, denn es ist ein Fehler drin: Port 445 muss am Remoterechner zum Supporter hin offen sein. In meinen Tests muss ich einen Fehler gemacht haben. Ist das evtl. dein Problem? Ich habe noch einmal getestet: wenn 445 nicht erreichbar ist, bekommt der Supporter bei mir "This computername is invalid".
Bei deinem "variablen Port"redest Du ja über die Highports, die von der rdpsa.exe geöffnet werden. Diese werden erst dann geöffnet, wenn der Hilfesuchende die Verbindungsanfrage bereits angenommen hat. Sie werden auch nach beenden der Verbindung sofort wieder geschlossen. Dein Plan kann also nicht gelingen.
Prüfe bitte, ob 445 offen ist und wenn nicht, ob es nach Öffnen geht. Du musst wohl oder übel für Euer VPN auch alle Highports zulassen.
"bleibt die CMD eine zeitlang ohne Ausgabe offen" - du meinst, die Kommandozeile wird schwarz? Dann ist 445 offen und es muss gehen.
In den Fall ist irgendwas vergurkt. Hauptverdächtige sind immer Firewalls und Antivirensoftware.
Du kannst Dich davon selbst überzeugen, dass 445 alleien für qwinsta reicht, indem Du ein frisch installiertes System angehst.
In den Fall ist irgendwas vergurkt. Hauptverdächtige sind immer Firewalls und Antivirensoftware.
Du kannst Dich davon selbst überzeugen, dass 445 alleien für qwinsta reicht, indem Du ein frisch installiertes System angehst.