Hilfe bei Powershell Schleife benötigt
Hallo Powershell User,
tja, da bin ich wieder und benötige Deine/Eure Hilfe beim Bau einer Schleife.
Ziel ist es an einem PC per script für alle Netzwerkadapter die Mac- und die Ip-Adresse auszulesen.
Leider überschreibt meine Schleife bei jedem Durchlauf die vorher gefunden Mac- und Ip Adresse mit den jeweils letzten gefunden Werten.
Ich muss diese also vor jedem Durchlauf in meine Ausgabedatei schreiben und die Variablen wieder leeren.
Aber dazu bin ich mal wieder zu doof, wie mache ich das?
Egal an welcher Stelle im Script ich diese leeren lassen, es funktioniert nicht!
Wer kann mir helfen?
Wünsche Dir/Euch einen schönen Tag
Potshock
tja, da bin ich wieder und benötige Deine/Eure Hilfe beim Bau einer Schleife.
Ziel ist es an einem PC per script für alle Netzwerkadapter die Mac- und die Ip-Adresse auszulesen.
########################################################################################
# # Pfad zur Ausgabedatei, Dateinamen: aus Inventarnr. und zweitem Teil
$Name2Teil = "_pc.txt"
$Datei = "$env:SystemDrive\Users\$env:USERNAME\Desktop\netz.txt"
#######################################################################################
# Ethernet-Adapter Ethernet und Drahtlos-LAN-Adapter WLAN werden per Schleife eingelesen
#######################################################################################
# ipconfig /all wird in Variable geschrieben
$Input = ipconfig /all
# Adapter Variable wird auf "kein Adapter gefunden" gesetzt
$Adapter = $false
# Schleife durchlaeuft jede Zeile vom $Input
foreach($line in $Input) {
# Leerzeile gefunden, dann continue
if($line.length -eq 0) {
continue
}
# Zeile mit 3 Leerzeichen am Anfang
if($line -like " *") {
# Erst wenn Adapter weiter unten gefunden wurde
if($Adapter) {
# Nachdem Adapter gefunden wurde, wird MAC gesucht
if($line -match "Physische Adresse") {
$Mac = $line
}
# Nachdem Adapter gefunden wurde, wird IP gesucht
if($line -match "IPv4-Adresse") {
$Ip = $line
}
}
}
else {
# Adapter Variable wird auf "kein Adapter gefunden" (zurück)gesetzt
$Adapter = $false
# Wenn Treffer(match) wird Adapter Variable auf true gesetzt
if($line -match "Ethernet-Adapter Ethernet") {
$Adapter = $true
$AdapterLan = $line
}
# Wenn Treffer(match) wird Adapter Variable auf true gesetzt
if($line -match "Drahtlos-LAN-Adapter WLAN") {
$Adapter = $true
$AdapterWlan = $line
}
}
}
Add-Content -Path $datei -Value "Netzwerk:"
Add-Content -Path $datei -Value ""
Add-Content -Path $datei -Value "$AdapterLan"
Add-Content -Path $datei -Value "MAC-Adresse: $Mac"
Add-Content -Path $datei -Value "IP-Adresse: $Ip"
Add-Content -Path $datei -Value "$AdapterWlan"
Add-Content -Path $datei -Value "MAC-Adresse: $Mac"
Add-Content -Path $datei -Value "IP-Adresse: $Ip"
Add-Content -Path $datei -Value ""
Leider überschreibt meine Schleife bei jedem Durchlauf die vorher gefunden Mac- und Ip Adresse mit den jeweils letzten gefunden Werten.
Ich muss diese also vor jedem Durchlauf in meine Ausgabedatei schreiben und die Variablen wieder leeren.
Aber dazu bin ich mal wieder zu doof, wie mache ich das?
$Mac = ""
$Ip = ""
Wer kann mir helfen?
Wünsche Dir/Euch einen schönen Tag
Potshock
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 581298
Url: https://administrator.de/contentid/581298
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
5 Kommentare
Neuester Kommentar
Servus.
Aua das tut ja in den Augen weh wenn ich das sehe, das ist Powershell kein Batch... Denk immer daran Powershell arbeitet objektorientiert, das "String-Extrahier-Gedöhns" ist bei der Aufgabe vollkommen überflüssig!
Grüße Uwe
Aua das tut ja in den Augen weh wenn ich das sehe, das ist Powershell kein Batch... Denk immer daran Powershell arbeitet objektorientiert, das "String-Extrahier-Gedöhns" ist bei der Aufgabe vollkommen überflüssig!
Get-Netadapter | select Name,InterfaceDescription,MacAddress,@{n='IP-Address';e={($_ | Get-NetIPAddress -AddressFamily IPv4).IPAddress -join ","}} | ft -Auto
Grüße Uwe
Moin,
Jaaaaaaaa. So ging's mir auch.
der Aufgabe vollkommen überflüssig!
Cool. Das merke ich mir.
Liebe Grüße
Erik
Jaaaaaaaa. So ging's mir auch.
der Aufgabe vollkommen überflüssig!
> Get-Netadapter | select Name,InterfaceDescription,MacAddress,@{n='IP-Address';e={($_ | Get-NetIPAddress -AddressFamily IPv4).IPAddress -join ","}} | ft -Auto
>
Cool. Das merke ich mir.
Liebe Grüße
Erik