Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell in datei suchen und inhalt in neue datei speichern

Frage Entwicklung Batch & Shell

Mitglied: micneu

micneu (Level 2) - Jetzt verbinden

18.02.2010, aktualisiert 21:38 Uhr, 10804 Aufrufe, 2 Kommentare

Hallo Leute,

ich habe ein problem, ich habe ca. 150 dateien mit ähnlichem inhalt in einem verzeichnis.

in diesen dateien soll es bestimmte inhalte ausgelesen werden und in einer neuen datei als .csv gespeichert werden.

hier ein aufbau einer datei:

01.
 
02.
Windows-IP-Konfiguration 
03.
 
04.
   Hostname  . . . . . . . . . . . . : msc-4 
05.
   Prim„res DNS-Suffix . . . . . . . :  
06.
   Knotentyp . . . . . . . . . . . . : Hybrid 
07.
   IP-Routing aktiviert  . . . . . . : Nein 
08.
   WINS-Proxy aktiviert  . . . . . . : Nein 
09.
 
10.
Ethernet-Adapter Bluetooth-Netzwerkverbindung: 
11.
 
12.
   Medienstatus. . . . . . . . . . . : Medium getrennt 
13.
   Verbindungsspezifisches DNS-Suffix:  
14.
   Beschreibung. . . . . . . . . . . : Bluetooth-Ger„t (PAN) 
15.
   Physikalische Adresse . . . . . . : 00-15-FF-19-19-15 
16.
   DHCP aktiviert. . . . . . . . . . : Ja 
17.
   Autokonfiguration aktiviert . . . : Ja 
18.
 
19.
Ethernet-Adapter LAN-Verbindung: 
20.
 
21.
   Verbindungsspezifisches DNS-Suffix:  
22.
   Beschreibung. . . . . . . . . . . : Realtek RTL8168C(P)/8111C(P) Family PCI-E Gigabit Ethernet NIC (NDIS 6.20) 
23.
   Physikalische Adresse . . . . . . : 00-FF-85-1B-AC-69 
24.
   DHCP aktiviert. . . . . . . . . . : Nein 
25.
   Autokonfiguration aktiviert . . . : Ja 
26.
   Verbindungslokale IPv6-Adresse  . : fe80::cdd7:c072:288:b94b%11(Bevorzugt)  
27.
   IPv4-Adresse  . . . . . . . . . . : 192.168.23.11(Bevorzugt)  
28.
   Subnetzmaske  . . . . . . . . . . : 255.255.255.0 
29.
   Standardgateway . . . . . . . . . : 192.168.23.1 
30.
   DHCPv6-IAID . . . . . . . . . . . : 234889605 
31.
   DHCPv6-Client-DUID. . . . . . . . : 00-01-00-01-13-0B-55-D5-00-21-85-1B-AC-69 
32.
   DNS-Server  . . . . . . . . . . . : 192.168.23.1 
33.
   NetBIOS ber TCP/IP . . . . . . . : Aktiviert 
34.
 
35.
Tunneladapter isatap.{25C5AFF5-770E-4378-8DAE-628EB1DB977E}: 
36.
 
37.
   Medienstatus. . . . . . . . . . . : Medium getrennt 
38.
   Verbindungsspezifisches DNS-Suffix:  
39.
   Beschreibung. . . . . . . . . . . : Microsoft-ISATAP-Adapter 
40.
   Physikalische Adresse . . . . . . : 00-00-00-00-00-00-00-E0 
41.
   DHCP aktiviert. . . . . . . . . . : Nein 
42.
   Autokonfiguration aktiviert . . . : Ja 
43.
 
44.
Tunneladapter LAN-Verbindung* 4: 
45.
 
46.
   Verbindungsspezifisches DNS-Suffix:  
47.
   Beschreibung. . . . . . . . . . . : Teredo Tunneling Pseudo-Interface 
48.
   Physikalische Adresse . . . . . . : 00-00-00-00-00-00-00-E0 
49.
   DHCP aktiviert. . . . . . . . . . : Nein 
50.
   Autokonfiguration aktiviert . . . : Ja 
51.
   IPv6-Adresse. . . . . . . . . . . : 2001:0:5ef5:73bc:c79:db4:abd1:ecab(Bevorzugt)  
52.
   Verbindungslokale IPv6-Adresse  . : fe80::c79:db4:abd1:ecab%13(Bevorzugt)  
53.
   Standardgateway . . . . . . . . . : :: 
54.
   NetBIOS ber TCP/IP . . . . . . . : Deaktiviert 
55.
 
56.
Tunneladapter isatap.{D76940D6-8ED4-440F-9153-58B2AAC1847F}: 
57.
 
58.
   Medienstatus. . . . . . . . . . . : Medium getrennt 
59.
   Verbindungsspezifisches DNS-Suffix:  
60.
   Beschreibung. . . . . . . . . . . : Microsoft-ISATAP-Adapter #2 
61.
   Physikalische Adresse . . . . . . : 00-00-00-00-00-00-00-E0 
62.
   DHCP aktiviert. . . . . . . . . . : Nein 
63.
   Autokonfiguration aktiviert . . . : Ja
ich möchte aus allen ethernet adaptern die mac-adresse, ip-adresse und den hostnamen
in einer .csv datei für jede datei eine zeile.
z. B.: IP;MAC;HOSTNAME
192.168.23.11;00-FF-85-1B-AC-69;msc-4

wie bekomme ich es in powershell hin diese daten
mit meinem code bekomme ich es noch nicht wirklich hin....
01.
$path = "C:\" 
02.
$endung = "*.txt" 
03.
Get-ChildItem $path -include $endung -Recurse | 
04.
Select-String -Pattern "Physikalische Adresse"
2. punkt wie bekomme ich es hin hat eine datei mehrere netzwerkkarten das jede NIC einen einzelnen eintrag in der
datei bekommt?

3. es ist nicht immer windows 7 oder vista, es können auch windows 200 und xp dabei sein...
also dort ist die datei etwas anderst

01.
Windows-IP-Konfiguration 
02.
 
03.
 
04.
 
05.
        Hostname. . . . . . . . . . . . . : MFC-PC-111 
06.
 
07.
        Primäres DNS-Suffix . . . . . . . :  
08.
 
09.
        Knotentyp . . . . . . . . . . . . : Unbekannt 
10.
 
11.
        IP-Routing aktiviert. . . . . . . : Nein 
12.
 
13.
        WINS-Proxy aktiviert. . . . . . . : Nein 
14.
 
15.
 
16.
 
17.
Ethernetadapter LAN-Verbindung 3: 
18.
 
19.
 
20.
 
21.
        Verbindungsspezifisches DNS-Suffix:  
22.
 
23.
        Beschreibung. . . . . . . . . . . : Broadcom NetLink (TM) Gigabit Ethernet 
24.
 
25.
        Physikalische Adresse . . . . . . : 00-19-99-31-97-AA 
26.
 
27.
        DHCP aktiviert. . . . . . . . . . : Nein 
28.
 
29.
        IP-Adresse. . . . . . . . . . . . : 192.168.1.111 
30.
 
31.
        Subnetzmaske. . . . . . . . . . . : 255.255.255.0 
32.
 
33.
        Standardgateway . . . . . . . . . : 192.168.1.200
gruß michael
Mitglied: 76109
19.02.2010 um 13:34 Uhr
Hallo Michael!

Powershell ist nicht mein Gebiet, aber alternativ kannst Du ja mal dieses VB-Skript testen (*.vbs).

Zur Funktion:
Alle Doppelpunkte + Leerzeichen durch einen Zeilenvorschub ersetzen
Anschließend die Text-Datei Zeilenvorschub-gesplittet in ein Array einlesen
Array durchsuchen nach: Hostname (Name = Array(i+1))
Array weiterdurchsuchen nach: Ethernet-Adapter LAN OR Ethernetadapter LAN
Wenn gefunden: Adapter = True
Array weiterdurchsuchen nach: Physikalische Adresse (Adresse = Array(i+1))
Array weiterdurchsuchen nach: IP-Adresse (Adresse = Array(i+1))
Variablen-Array prüfen Physikalische Adresse <> "" AND IP-Adresse <> ""
Array mit Trennzeichen (Semikolon) in Csv-Datei schreiben.

Quellcode kopieren und unter *.vbs abspeichern:
01.
Const TxtType = "txt" 
02.
Const TxtPath = "X:\Test" 
03.
Const CsvPath = "X:\Test\Test.Csv" 
04.
 
05.
Const Adapter1 = "Ethernet-Adapter LAN" 
06.
Const Adapter2 = "Ethernetadapter LAN" 
07.
 
08.
 
09.
Dim Fso, File, TxtFile, CsvFile, Adapter, Text, Token, i 
10.
 
11.
Set Fso = CreateObject("Scripting.FileSystemObject") 
12.
 
13.
Set CsvFile = Fso.CreateTextFile(CsvPath) 
14.
             
15.
For Each File In Fso.GetFolder(TxtPath).Files 
16.
    If LCase(Fso.GetExtensionName(File)) = LCase(TxtType) Then 
17.
        Set TxtFile = Fso.OpenTextFile(File.Path) 
18.
             
19.
        Text = Split(Replace(TxtFile.ReadAll, ": ", vbCrLf), vbCrLf):  TxtFile.Close 
20.
             
21.
        Adapter = False:  Token = Array("", "", "") 
22.
             
23.
        For i = 0 To UBound(Text) 
24.
            If InStr(1, Text(i), "Hostname", vbTextCompare) > 0 Then 
25.
                Token(2) = Text(i + 1) 
26.
            ElseIf Token(2) <> "" Then 
27.
                If InStr(1, Text(i), Adapter1, vbTextCompare) > 0 Or InStr(1, Text(i), Adapter2, vbTextCompare) > 0 Then 
28.
                    Adapter = True 
29.
                ElseIf Adapter Then 
30.
                    If Left(LTrim(Text(i)), 6) = "Physik" Then 
31.
                        Token(1) = Text(i + 1) 
32.
                    ElseIf Left(LTrim(Text(i)), 2) = "IP" Then 
33.
                        Token(0) = Split(Text(i + 1), "(")(0) 
34.
                    End If 
35.
                    If Token(0) <> "" And Token(1) <> "" Then CsvFile.WriteLine Join(Token, ";"):  Exit For 
36.
                End If 
37.
            End If 
38.
        Next 
39.
    End If 
40.
Next 
41.
CsvFile.Close
Gruß Dieter
Bitte warten ..
Mitglied: micneu
21.02.2010 um 12:29 Uhr
hallo leute habe jetzt ein ergebnis (langsam) und ein neues problem.
ich habe es soweit das es so funktioniert wie ich es haben wollte nur hatte ich nicht bedacht das auch einige computer
auch mehrere netzwerk schnittstellen haben und die würde ich auch gerne dem hostnamen zuordnen.

hier mein quelltext:

01.
#   ************************************************************** 
02.
#    einmal auf der powershell ausgeführt werden 
03.
#     "Set-ExecutionPolicy Unrestricted" 
04.
#   ************************************************************** 
05.
#     
06.
#     
07.
#   ************************************************************** 
08.
#   * Erstellt M.N. - POWERSHELL / Entwicklung   21.02.2010       
09.
#   ************************************************************** 
10.
# variablen deklarieren 
11.
$start = Get-Date 
12.
$ziel = "C:\Users\mne\Desktop\07_ips.txt" 
13.
$endung = "*.txt" 
14.
dir $ziel -filter $endung |  
15.
    ForEach-Object { 
16.
        echo "Datei: $_" 
17.
        $text = Get-Content $_.fullName 
18.
        #echo $text 
19.
        $IP = $text -match 'IPv4-Adresse|IP-Adresse' 
20.
        $IP = $IP -replace 'IPv4-Adresse.*\:\s|IP-Adresse.*\:\s','' 
21.
        $IP = $IP -replace '\(Bevorzugt\)\s','' 
22.
        $IP = $IP -replace '/s+',''         
23.
        echo "$IP;" 
24.
        $MAC = $text -match '(Physikalische Adresse).*([\d|A-F][\d|A-F]-[\d|A-F][\d|A-F]-[\d|A-F][\d|A-F]-[\d|A-F][\d|A-F]-[\d|A-F][\d|A-F]-[\d|A-F][\d|A-F])' 
25.
        $MAC = $MAC -replace 'Physikalische Adresse.*\:\s','' 
26.
        echo "$MAC;" 
27.
        $HOSTNAME = $text -match "(Hostname)" 
28.
        $HOSTNAME = $HOSTNAME -replace 'Hostname.*\:\s','' 
29.
        $HOSTNAME = $HOSTNAME -replace '/s+','' 
30.
        echo "$HOSTNAME" 
31.
        $info = "$IP;$MAC;$HOSTNAME" 
32.
        $info = $info.TrimStart() 
33.
        $info = $info.TrimEnd() 
34.
        $info = $info -replace '\s+','' 
35.
        echo $info 
36.
        Write-Output $info >> $ziel\test.csv 
37.
38.
$stop = Get-Date 
39.
$gelaufenezeit = ($stop - $start).TotalSeconds 
40.
echo "Auftrag nach $gelaufenezeit Sek. erledigt...."

gruß michael

ps: danke didi1954... ich möchte es in powershell umsetzen... werde jetzt nach und nach alle meine .vbs sachen in powershell umsetzen.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell: Spalten tauschen und neue Spalten in CSV datei erzeugen (16)

Frage von Rippchen zum Thema Batch & Shell ...

Batch & Shell
Wert in einer TXT Datei suchen (11)

Frage von nolle99 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell Datei kopieren mit ACL Script funktioniert nicht (4)

Frage von xpxy15 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...