Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 09.12.2011, 15:29   #1
Newbie
 
Offline
Registriert seit: 12-2011
Beiträge: 7
Powershell: Daten aus For-Schleife speichern?

Guten Tag

Habe ein kleines Problem mit Powershell.

Ich habe folgende Funktion geschrieben um die Netzwerkadapter auszulesen:
Code:
function get_network
{
	$nw = @{}
	$wmi = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object{$_.IpEnabled -eq $true}
	foreach ($adapter in $wmi)
	{
		$nw.Ip += $adapter.IpAddress
		$nw.Subnet += $adapter.IpSubnet
		$nw.Gateway += $adapter.DefaultIpGateway
		$nw.Dns += $adapter.DnsServerSearchOrder
		$nw.Description += $adapter.Description
		$nw.Mac += $adapter.MacAddress
	}
	
	return $nw
}
Das Problem jetzt, wenn es mehrere Adapter sind, werden die Daten in $nw vom nächsten Adapter überschrieben.
Mit += kann ich es anhängen, aber ich denke es sollte auch eine schönere Lösung geben, mit der man die Daten trennen kann?

Gruss
    Mit Zitat antworten
Alt 09.12.2011, 16:34   #2
olc
Expert Member
 
Benutzerbild von olc
 
Offline
Registriert seit: 07-2006
Beiträge: 3.692
Hi,

für welchen zweck soll die Ausgabe dienen? Je nach Anwendungszweck könnte man die Daten auch in einem Array speichern o.ä., kommt darauf an, was danach damit passieren soll.

Folgendes reicht nicht aus?

Code:
Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object{$_.IpEnabled -eq $true} | Select
IPAddress, IPSubnet, DefaultIPGateway, DnsServerSearchOrder, Description, MacAddress
Viele Grüße
olc

Signatur
"Mit dem Wissen wächst der Zweifel." (Johann Wolfgang von Goethe)

    Mit Zitat antworten
Alt 09.12.2011, 17:09   #3
Newbie
 
Offline
Registriert seit: 12-2011
Beiträge: 7
Nein, ich möchte die Daten danach weiterverwerten (Reports, etc.).
Darum hab ich zu einer Hash-Table gegriffen.

Aber du hast mich auf eine Idee gebracht, evtl. könnte ich den Array den deine Variante ausgibt weiterverwenden, weil ich ja immer weiss, das ein Netzwerkadapter 6 Zeilen umfasst.

Ist aber eigentlich auch keine optimale Lösung, sollte aber funktionieren.

Gruss
    Mit Zitat antworten
Alt 09.12.2011, 17:36   #4
olc
Expert Member
 
Benutzerbild von olc
 
Offline
Registriert seit: 07-2006
Beiträge: 3.692
Hi,

im Kern kannst Du den Inhalt von "$wmi" an jeder Stelle im Script verwenden. Dazu mußt Du es nicht einer gesonderten Variable zuweisen, so wie in Deinem Beispiel oben geschehen.

Code:
function get_network
{
    $wmi = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object{$_.IpEnabled -eq $true}
    return $wmi
}
get_network

$wmi | ForEach {
        $_.IpAddress
		$_.IpSubnet
		$_.DefaultIpGateway
		$_.DnsServerSearchOrder
		$_.Description
		$_.MacAddress
        write ""
}
Obwohl in dem Fall das "return" nicht ganz sauber ist. Eigentlich müßtest Du mit Set-Variable o.ä. arbeiten.

Wie gesagt, ohne genau zu wissen, was Du konkret machen möchtest, wird es schwer...

Viele Grüße
olc

Signatur
"Mit dem Wissen wächst der Zweifel." (Johann Wolfgang von Goethe)

    Mit Zitat antworten
Alt 09.12.2011, 17:51   #5
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
Hi,

Über ein Array

Code:
function get_network
{
	$nw = @{}
    $a=@()
	$wmi = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object{$_.IpEnabled -eq $true}
	foreach ($adapter in $wmi)
	{
        $nw = @{}
    
		$nw.Ip += $adapter.IpAddress
		$nw.Subnet += $adapter.IpSubnet
		$nw.Gateway += $adapter.DefaultIpGateway
		$nw.Dns += $adapter.DnsServerSearchOrder
		$nw.Description += $adapter.Description
		$nw.Mac += $adapter.MacAddress
        
        $a+=$nw
        
	}
	
    "Anzahl Netzwerkkarten: {0}" -f $(1+$($a.count))

}

get_network
dann hast du sie alle Hashes als Arrayelemente getrennt

blub

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 10.12.2011, 14:22   #6
Newbie
 
Offline
Registriert seit: 12-2011
Beiträge: 7


Danke dir blub, das funktioniert wunderbar.

P.S. Das Script dient zum (nach)dokumentieren.
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2K8R2 - Daten in Anwendungen öffnen/speichern Langsam und Störrisch BlackShadow Windows Server Forum 11 06.05.2011 11:34
XP - Usern ermöglichen Daten auf USBstick zu speichern Sasch Windows Forum — Allgemein 6 25.10.2010 22:10
Powershell Do oder While-Schleife mit 2 Bedingungen Murf Windows Forum — Scripting 3 22.07.2009 17:32
Speichern von Login Logoff Daten edvmaxe Windows Forum — Scripting 3 22.05.2008 19:23
2K3 - Remotesession-Daten speichern santec Windows Forum — LAN & WAN 0 21.09.2007 20:06


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:16 Uhr. Seite generiert in 0,033 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang