Jump to content

PS IP/MAC auslesen


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

Empfohlene Beiträge

Hallo,

Wir haben in unserer Firma den Missstand, dass 99% der PCs und Notebooks auf statische IPs gesetzt sind.

 

einfach auf dynamisch umschalten ist zwar schön, jedoch haben wir vier verschiedene Gateways, die alle für eine andere Kundenverbindung verwendet werden. Somit müssen bei den Usern unterschiedliche Gateways drinnen sein.

 

Ist ja mit reservierungen kein Problem.

 

Ich möchte nun einfach die MAC Adresse und die jeweilige IP der PCs herausfinden.

Mir reicht die Ausgabe von Get-NetAdapter völlig.

 

Nur:

Ich möchte, dass ich die ausgegeben Werte entweder in einem Order wiedergegeben werden, wobei die Dateinamen die hostnamen sind (mit >\\pfad\%hostname% hauts nicht hin :/)

oder in eine einzelne txt Datei in etwa so stehen

 

Rechnername1

Name InterfaceDescription ifIndex Status MacAddress LinkSpeed

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

LAN-Verbindung Cisco AnyConnect Secure Mobility Cli... 35 Disabled 00-33-33-33-33-00 1 Gbps

vEthernet (virtual LAN) Hyper-V-Adapter - virtuelles Ether...#2 19 Up C8-22-22-22-22-22 1 Gbps

Ethernet Controller der Familie Realtek PCIe GBE 12 Up C8-22-22-22-22-22 1 Gbps

 

Rechnername2

Name InterfaceDescription ifIndex Status MacAddress LinkSpeed

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

LAN-Verbindung Cisco AnyConnect Secure Mobility Cli... 35 Disabled 00-33-33-33-33-00 1 Gbps

vEthernet (virtual LAN) Hyper-V-Adapter - virtuelles Ether...#2 19 Up AB-22-22-22-22-22 1 Gbps

Ethernet Controller der Familie Realtek PCIe GBE 12 Up AB-22-22-22-22-22 1 Gbps

 

 

was ist wie, und wie schwer umsetzbar - gibt es eine leichtere Möglichkeit?

(Alternativ verwende ich ein logonscript dass mir mit netsh in eine Datei schreibt)

danke

lg

Link zu diesem Kommentar
Hallo,

einfach auf dynamisch umschalten ist zwar schön, jedoch haben wir vier verschiedene Gateways, die alle für eine andere Kundenverbindung verwendet werden. Somit müssen bei den Usern unterschiedliche Gateways drinnen sein.

 

Kannst du nicht einen Router hinsetzen, der zu den Kundenverbindungen oder ins Internet Routet? Dann benötigst du nur ein Gateway für alle.

Link zu diesem Kommentar

Hi,

Kannst du nicht einen Router hinsetzen, der zu den Kundenverbindungen oder ins Internet Routet? Dann benötigst du nur ein Gateway für alle.

wir haben mehrere Externe IP Adressen, die bei gewissen Kunden freigeschaltet sind, deswegen mehrere Gateways - wird eventuell irgendwann mit NAT Regeln geändert, vorerst aber nicht.

 

in Erster Linie benötige ich den Hostnamen und die Mac der Verbindungen (bei Notebooks sind ja WLAN adapter auch da)

 

also ich würde mir hier keine Mühe machen und einen IPScanner nutzen für das Vorhaben.

Der Zeigt recht übersichtlich PC-Name / IP-Adresse / Mac-Adresse an, auch exportierbar in eine txt.

 

Das habe ich mir schon gedacht, nur möchte ich es vermeiden, warten zu müssen bis alle User gleichzeitig da sind (das ist sogut wie nie der Fall)

 

aus dem Grund tendiere ich auch eher, dass ich das script per logonscript aufrufe, somit wäre ich davon unabhängig

 

In Powershell kommst du mit $env:hostname an den Rechnernamen.

Danke für den Tip - mit einem gc davor, hat er mir es auch in eine variable reinschreiben lassen :)

Link zu diesem Kommentar

eine funktionierende Lösung (unschön) hab ich schon :)

eigentlich einfacher und kürzer als ich mir gedacht hatte.

$name = gc env:computername 
get-netadapter |fl Name,InterfaceDescription,MacAddress >\\servername\mac$\$name.txt

das ganze durchs logonscript aufrufen sollte funktionieren.

 

hat jemand eine "schönere" Lösung (in der eventuell auch noch die aktuelle IP drinnen ist?)

 

lg

Link zu diesem Kommentar

Hallo sweigl,

 

woher kommt den get-netadapter?

 

$name = gc env:computername 
get-netadapter |fl Name,InterfaceDescription,MacAddress >\\servername\mac$\$name.txt

 

Auf dieser Seite ist der Umgang mit networkadapter sehr gut beschrieben, vielleicht ist da etwas dabei. Using PowerShell to Get or Set NetworkAdapterConfiguration-View and Change Network Settings Including DHCP, DNS, IP Address and More (Dynamic AND Static) Step-By-Step - ITProGuru Blog by Systems Management Expert Dan Stolts - Site Home - TechNet Blog

 

Gruß

riminusco

Link zu diesem Kommentar

Hi Riminusco,

Danke für den Link, hat mich weiter gebracht.

 

$name = gc env:computername
$wmi = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE 
Add-Content "\\fileserver\mac$\mac.txt" $name
Add-Content "\\fileserver\mac$\mac.txt" "`tDHCP aktiv:`t$($wmi.DHCPEnabled)"
Add-Content "\\fileserver\mac$\mac.txt" "`tIP Adresse:`t$($wmi.IPAddress)"
Add-Content "\\fileserver\mac$\mac.txt" "`tMAC Adresse:`t$($wmi.MACaddress)"
Add-Content "\\fileserver\mac$\mac.txt" "`tDNS Server:`t$($wmi.DNSServerSearchOrder)"
Add-Content "\\fileserver\mac$\mac.txt" "`n"

 

hab das Ganze nun so eingetragen.

die Ausgabe sieht dann so aus:


PC1
DHCP aktiv:	False
IP Adresse:	172.100.66.10
MAC Adresse:	C8:60:00:98:DF:D0
DNS Server:	172.100.99.99 172.100.99.98


PC2
DHCP aktiv:	False
IP Adresse:	172.100.66.4
MAC Adresse:	00:18:F3:5C:12:E4
DNS Server:	172.100.99.99 172.100.99.98

was ja im Grunde genommen recht übersichtlich ist.

 

Einzige Schwierigkeit vor der ich nun stehe:

gibt es eine Möglichkeit, dass wenn sich PC1 erneut anmeldet (wird über logonscript aufgerufen), dass er seine alten Werte überschreibt? aktuell fügt er lediglich eine Zeile hinzu.

 

lg

Stefan

Link zu diesem Kommentar

Hier meine Quick-and-dirty Lösung:

 

Powershell Script auf den Rechnern

$path = "d:\temp\csv"
$wmi = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE
$result = ("" | select name,dhcpenabled,ipaddress,mac,dnssrv)
$result.name = $wmi.DNSHostName
$result.dhcpenabled = $wmi.DHCPEnabled
$result.ipaddress = [string]::Join(" ",$wmi.IPAddress)
$result.mac = $wmi.MACAddress
$result.dnssrv = [string]::Join(" ",$wmi.DNSServerSearchOrder)

$result | Export-Csv ("{0}\{1}.csv" -f $path,$wmi.DNSHostName) -Delimiter ";" -NoTypeInformation -Force

 

Und hier zum Einsammeln:

$path = "d:\temp\csv"
$files = dir $path -Filter *.csv
$data = @()

foreach ($file in $files) {
$data += Import-Csv $file.fullname -Delimiter ";"
}

$data | Export-Csv $path\totalsrv.csv -Delimiter ";" -NoTypeInformation

Meiner Meinung nach ist der Export als CSV Datei sinnvoller als eine TXT Datei mit TAB getrennten Werten. Damit kannst du mit Import-CSV die Daten direkt weiterverarbeiten.

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...