Stefan W 14 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 In Powershell kommst du mit $env:hostname an den Rechnernamen. Zitieren Link zu diesem Kommentar
XP-Fan 219 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 Hallo, 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. Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 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. Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 2. August 2012 Autor Melden Teilen Geschrieben 2. August 2012 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 :) Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 2. August 2012 Autor Melden Teilen Geschrieben 2. August 2012 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 Zitieren Link zu diesem Kommentar
riminusco 10 Geschrieben 2. August 2012 Melden Teilen Geschrieben 2. August 2012 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 Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 6. August 2012 Autor Melden Teilen Geschrieben 6. August 2012 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 6. August 2012 Melden Teilen Geschrieben 6. August 2012 Ja, das geht. Wird so aber umständlich sein. Eine Einfache Lösung wäre, dass die ganzen Rechner ihr Ergebnis in ein txt File schreiben (und dieses beim neu anmelden überschreiben) und ein zentrales Script liest die einzelnen Files ein und generiert ein Zentraldokument (z.B. auch eine Tabelle, die einfach in Excel lesbar ist). Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 6. August 2012 Autor Melden Teilen Geschrieben 6. August 2012 das hört sich gut an, dann probiere ich das mal aus. danke lg Zitieren Link zu diesem Kommentar
Stefan W 14 Geschrieben 7. August 2012 Autor Melden Teilen Geschrieben 7. August 2012 hi, Ausgabe des Scripts geht jetzt pro PC in eine eigene Datei (hostname.txt) und die Werte sind durch einen Tab getrennt. Jedoch klappt es noch nicht, dass ich den Inhalt der Dateien (je tab, neue spalte, je Datei, neue zeile) in die xls schreibe. mit add-content klappt das ohne weiteres nicht. lg Zitieren Link zu diesem Kommentar
ducke 11 Geschrieben 7. August 2012 Melden Teilen Geschrieben 7. August 2012 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. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.