Get-WmiObject, nach Netzwerkadapter filtern
Hallo,
ich habe folgendes Script:
Jedoch ist in dem Excel-Dokument die Spalte für den Gateway nacher leer.
Nun habe ich das wmi objekt mal ohne Excel und dem drum-herum ausgeführt und hab das hier im Ausgabebereich bekommen:
Hier gibt es jetzt ja jeden Punkt zweimal (zweiter Netzwerkadapter?) und in Excel gibt er mir immer den zweiten aus, ich benötige aber den ersten?
Wie sag ich dem Powershell-Script nun das er mir bitte den ersten Adapter in Excel schreiben soll?
Danke.
Gruß
Florian
ich habe folgendes Script:
$NetworkAdapter = Get-WmiObject Win32_NetworkAdapterConfiguration
$excel = new-object -comobject excel.application
$excel.visible = $true
$workbook = $excel.workbooks.add()
$workbook.workSheets.item(3).delete()
$workbook.WorkSheets.item(2).delete()
$workbook.WorkSheets.item(1).Name = "Netzwerk"
$sheet = $workbook.WorkSheets.Item("Netzwerk")
$f = 2
$lineStyle = "microsoft.office.interop.excel.xlLineStyle" -as [type]
$colorIndex = "microsoft.office.interop.excel.xlColorIndex" -as [type]
$borderWeight = "microsoft.office.interop.excel.xlBorderWeight" -as [type]
$chartType = "microsoft.office.interop.excel.xlChartType" -as [type]
For($b = 1 ; $b -le 4 ; $b++) {
$sheet.cells.item(1,$b).font.bold = $true
$sheet.cells.item(1,$b).borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
$sheet.cells.item(1,$b).borders.weight = $borderWeight::xlMedium }
For($a = 1 ; $a -le 1 ; $a++) {
$sheet.cells.item($a,1).font.bold = $true
$sheet.cells.item($a,1).borders.ColorIndex = $colorIndex::xlColorIndexAutomatic
$sheet.cells.item($a,1).borders.weight = $borderWeight::xlMedium }
$sheet.cells.item(1,1) = "IPv4 Adresse"
$sheet.cells.item(1,2) = "Subnetzmaske"
$sheet.cells.item(1,3) = "Standard Gateway"
$sheet.cells.item(1,4) = "MAC Adresse"
Foreach($process in $NetworkAdapter) {
$sheet.cells.item($f,1) = $process.IPAddress
$sheet.cells.item($f,2) = $process.IPSubnet
$sheet.cells.item($f,3) = $process.DefaultIPGateway
$sheet.cells.item($f,4) = $process.MACAddress
$x++ } #end foreach
$range = $sheet.usedRange
$range.EntireColumn.AutoFit() | out-null
Jedoch ist in dem Excel-Dokument die Spalte für den Gateway nacher leer.
Nun habe ich das wmi objekt mal ohne Excel und dem drum-herum ausgeführt und hab das hier im Ausgabebereich bekommen:
$colItems = Get-WmiObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq "true"}
ForEach($objItem in $colItems)
{
"IP Adresse:" + $objItem.IPAddress
"Subnetzmaske:" + $objItem.IPSubnet
"Standard Gateway:" + $objItem.DefaultIPGateway
"MAC Adresse:" + $objItem.MACAddress
}
IP Adresse:192.168.***.***
Subnetzmaske:255.255.254.0
Standard Gateway:192.168.***.***
MAC Adresse:C4:34:6B:51:E9:**
IP Adresse:192.168.56.1 fe80::c482:820b:36ef:4918
Subnetzmaske:255.255.255.0 64
Standard Gateway:
MAC Adresse:0A:00:27:00:00:**
Hier gibt es jetzt ja jeden Punkt zweimal (zweiter Netzwerkadapter?) und in Excel gibt er mir immer den zweiten aus, ich benötige aber den ersten?
Wie sag ich dem Powershell-Script nun das er mir bitte den ersten Adapter in Excel schreiben soll?
Danke.
Gruß
Florian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 320503
Url: https://administrator.de/contentid/320503
Ausgedruckt am: 26.11.2024 um 04:11 Uhr
11 Kommentare
Neuester Kommentar
$colitems.Ipaddress
$colitems.IpSubnet
#...
Gruß
Wohl noch keinen Kaffee gehabt min Jung ?!
Zeile 1 zum Auslesen der Config fehlt in deinem obigen Script ! Bzw du hast die Variable anders benannt
$networkadapter
Na machts jetzt Klick ?!
Man sollte vor dem Schreiben immer alles nochmal durchgehen dann wären diese sinnlosen Posts überflüssig!
Zeile 1 zum Auslesen der Config fehlt in deinem obigen Script ! Bzw du hast die Variable anders benannt
$NetworkAdapter = Get-WmiObject Win32_NetworkAdapterConfiguration | where{$_.IPEnabled -eq "true"}
Na machts jetzt Klick ?!
Man sollte vor dem Schreiben immer alles nochmal durchgehen dann wären diese sinnlosen Posts überflüssig!
Och mönsch, du bist echt schwer von Begriff...
Wenn du die Variable anders benennst musst du sie auch mit dem anderen Namen verwenden und darauf zuzugreifen !!!!
$networkadapter.Ipaddress
Btw. Ist dein Skript viel zu umständlich und viel zu lahm mit Excel Com-Automation. Mit Export-CSV wärst du 1000mal schneller am Ziel.
Wenn du die Variable anders benennst musst du sie auch mit dem anderen Namen verwenden und darauf zuzugreifen !!!!
$networkadapter.Ipaddress
Btw. Ist dein Skript viel zu umständlich und viel zu lahm mit Excel Com-Automation. Mit Export-CSV wärst du 1000mal schneller am Ziel.
Gibt es eine Möglichkeit wo er sich selber den richtigen adapter sucht?
Ja, einfach per Where-Object den Adapter mit Default-GW rausfiltern:$adapter = gwmi win32_NetworkadapterConfiguration | ?{$_.IPEnabled -and $_.DefaultIPGateway -ne $null} | select -First 1
$adapter.IpAddress
$adapter.IPSubnet
Kenne mich leider nicht aus mit CSV-Export
Da lässt sich doch ändern, die obige Methode ist jedenfalls nicht zu bevorzugen!Um einen Export per Export-CSV machen zu können musst du immer ein Objekt mit Eigenschaften haben, das kann man sich schnell zusammenbauen
gwmi win32_NetworkadapterConfiguration | ?{$_.IPEnabled -and $_.DefaultIPGateway -ne $null} | select IPAddress,IPSubnet -First 1 | export-csv "C:\daten.csv" -delimiter ";" -NoType -Encoding UTF8
Zitat von @Flodsche:
Ich weiß nicht ob ich mich jetzt in die CSV Export Geschichte reindenken soll, hab diese Zeilen so noch nie gesehen, will euch ja schließlich hier in dem Forum nicht noch ganz verrück machen. :P
Ein Forum ist kein Ersatz fürs Lernen und Lesen !Ich weiß nicht ob ich mich jetzt in die CSV Export Geschichte reindenken soll, hab diese Zeilen so noch nie gesehen, will euch ja schließlich hier in dem Forum nicht noch ganz verrück machen. :P
- http://www.powershellpraxis.de/
- http://www.msxfaq.de/code/powershell/powershell.htm
- PowerShell for Runaways - Part I
- PowerShell For Runaways - Part II
- http://powershell.com/cs/
- http://powershell.com/cs/media/13/default.aspx
will euch ja schließlich hier in dem Forum nicht noch ganz verrück machen. :P
Also erst mal ein paar Tage lesen bevor hier für jede simple Frage, die sich mit einer Seite lesen abfackeln lässt, ein neuer Thread aufgemacht wird!Ein Meister fällt nicht aus dem Himmel, er muss erst gefüttert werden und das geht am besten wenn man gezielt erst die Grundlagen der Scriptsprache lernt und sich dann Schritt für Schritt weiter arbeitet. Du steigst 10 Etagen zu hoch ein, das kann nur zu einem tiefen Fall und Frust führen.