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

Variablen in CSV-Datei speichern

Frage Entwicklung Batch & Shell

Mitglied: Gundelputz

Gundelputz (Level 1) - Jetzt verbinden

03.06.2013 um 15:12 Uhr, 3572 Aufrufe, 16 Kommentare, 7 Danke

Hallo alle zusammen

ich beschäftige mich seit einigen Tagen mit Powershell und bin begeistert wie mächtig dies doch ist.
Als Neuling habe ich natürlich auch gleich ein paar Fragen.
um daten zu erfassen möchte ich ein paar Variablen in eine CSV-Datei speichern. Hierzu habe ich mal zum testen 3 variablen erstellt. Meine Frage ist nun:
1. wie speichere ich diese in einer CSV
2. wie kann ich einen weiteren Datensatz an diese Datei anhängen
3. wie kann ich die Daten wieder auslesen

vielen dank im vorraus
Mitglied: colinardo
03.06.2013, aktualisiert um 15:34 Uhr
Hallo Gundelputz,

was du machen kannst ist die Variablen in eine Hashtable einzutragen dann ein PS-Objekt daraus zu erstellen und mit Export-CSV in eine CSV zu exportieren:

Export in eine CSV
01.
$hashtable = @{"Name"="Sepp";"Nachname"="Meier"} 
02.
$obj = New-Object PSObject -Property $hashtable 
03.
$obj | export-csv -Path "C:\test.csv" -NoTypeInformation
Import einer CSV in ein Objekt
01.
$csv = import-csv -Path "C:\test.csv"
Zugriff auf die Inhalte des CSV-Objekts
01.
$csv | %{write-host $_.Name $_.Nachname}
Grüße Uwe
Bitte warten ..
Mitglied: Gundelputz
03.06.2013 um 15:33 Uhr
Danke
probiere es gleich mal aus
Bitte warten ..
Mitglied: Gundelputz
03.06.2013 um 15:58 Uhr
habs mal geteste

$var1 = 5
$var2 = 10
$var3 = 20
$hashtable = @{"Drucker" = $var1;"IP" = $var2;"Zähler" = $var3}
$obj = New-Object PSObject -Property $hashtable
$hashtable | export-csv -Path "c:\usr\snmpget\test-csv.csv" -NoTypeInformation

bekomme folgende Einträge

IsReadOnly,"IsFixedSize","IsSynchronized","Keys","Values","SyncRoot","Count"
False,"False","False","System.Collections.Hashtable+KeyCollection","System.Collections.Hashtable+ValueCollection","System.Object","3"
Bitte warten ..
Mitglied: colinardo
03.06.2013 um 16:02 Uhr
Das ist falsch:
$hashtable | export-csv -Path "c:\usr\snmpget\test-csv.csv" -NoTypeInformation
es muss so heißen:
$obj | export-csv -Path "c:\usr\snmpget\test-csv.csv" -NoTypeInformation
war oben ein Schreibfehler, sorry
Bitte warten ..
Mitglied: Gundelputz
03.06.2013 um 16:05 Uhr
Gott bin ich ein Trottel
Bitte warten ..
Mitglied: Gundelputz
03.06.2013 um 16:17 Uhr
Da dies so Super klappt gleich noch ne Frage. Mit folgendem Code lese ich einen Zählerstand von einem Drucker aus und speicher ihn in einer txt:

snmpget.exe -c public -v 2c $IP .1.3.6.1.4.1.1347.42.2.1.1.1.6.1.1 >"c:\usr\snmpget\1.txt"

in der ersten Zeile steht dann:

SNMPv2-SMI::enterprises.1347.42.2.1.1.1.6.1.1 = INTEGER: 8382

Meine Frage ist jetzt:
kann ich evtl. den Zähler gleich in eine Variable speichern und wenn nein wie kann ich den Zählerstand aus der TXT auslesen?
Bitte warten ..
Mitglied: colinardo
03.06.2013, aktualisiert um 16:41 Uhr
Das ginge z.B. so
01.
$string = get-content "c:\usr\snmpget\1.txt" 
02.
$zaehler = $string.Substring($string.LastIndexOf(":")+2, $string.length - ($string.LastIndexOf(":")+2))
und mit Regular Expressions so:
01.
Function Get-Matches($Pattern,$groupNumber = 0) { 
02.
  begin { $regex = New-Object Regex($pattern) } 
03.
  process { foreach ($match in ($regex.Matches($_))) { ([Object[]]$match.Groups)[$groupNumber].Value } } 
04.
05.
 
06.
$string = get-content "c:\usr\snmpget\1.txt"  
07.
$zaehler = $string | Get-Matches "(\d*$)"
Bitte warten ..
Mitglied: Gundelputz
04.06.2013 um 08:32 Uhr
Danke, echt Super.
habe Gestern noch über den import aus der csv gesessen und bin leider nicht viel weiter gekommen.

$csv = import-csv -Path "C:\usr\snmpget\test.csv"

wird zwar ohne Fehlermeldung ausgeführt aber ich scheitere dann am import der Zeilen.
das gleiche gilt für das anhängen von Datensätzen. hier muss es doch so etwas wie open for append geben.

kannst du mir da etwas an Literatur empfehlen(in deutscht)in der alles beschrieben wird. so was wie ein Kompendium mit vielen Beispielen und Erleuterungen.
das Handbuch ist für einen Anfänger wie mich doch etwas verworren. Bis du erst mal den richtigen Befehl hast dauert es schon ewig und vom verstehen kann dann bei mir noch gar nicht die Rede sein. Deswegen bin ich dir sehr dankbar für deine Hilfe weil ich so Stück für Stück den Code zerlegen und verstehen kann.
Danke noch mal
Bitte warten ..
Mitglied: Gundelputz
04.06.2013 um 09:21 Uhr
und gleich noch ne Frage. Wie kann ich Variablen konvertieren. Finde weder im Handbuch noch im Netz was passendes. Ist wahrscheinlich so einfach das es nicht der rede wert ist.
habs mal mit
$var1.ToString($zaehler)
probiert. bringt aber nichts.
Bitte warten ..
Mitglied: colinardo
04.06.2013, aktualisiert um 09:28 Uhr
Zitat von Gundelputz:
wird zwar ohne Fehlermeldung ausgeführt aber ich scheitere dann am import der Zeilen.
die Zeilen kannst du dir ja erst mal anzeigen lassen indem du einfach $csv in der Shell eingibst. Um auf die einzelnen Zeilen mit deren Werten zuzugreifen musst du eine Schleife verwenden, wie in meinem ersten Kommentar geschrieben:
$csv | %{write-host $_.Name $_.Nachname}
hierbei wird der inhalt der CSV-Datei via PIPE(|) an das Foreach-Cmdlet übergeben(das %{} ist eine Abkürzung für Foreach-Object) - in der Schleife kannst du dann auf die Zeile mit $_ zugreifen, um dann z.B. auf die Spalte "Vorname" zuzugreifen schreibst du $_.Vorname.

das gleiche gilt für das anhängen von Datensätzen. hier muss es doch so etwas wie open for append geben.
wenn du nur etwas an eine CSV-Datei anhängen willst, kannst du das auch ohne Import der Daten folgendermaßen machen:
"`nSepp,Meier,Musterstraße 20,55555 Musterhausen" | Out-File -Append "C:\test.csv" -Encoding UTF8
Du hängst den Inhalt als String direkt an die CSV-Datei und behältst dabei dessen Inhalt. Das `n am Anfang erzeugt einen Zeilenumbruch in der Datei damit die Daten in einer neuen Zeile anfangen.

kannst du mir da etwas an Literatur empfehlen(in deutscht)in der alles beschrieben wird. so was wie ein Kompendium mit vielen
Beispielen und Erleuterungen.
das Handbuch ist für einen Anfänger wie mich doch etwas verworren. Bis du erst mal den richtigen Befehl hast dauert es
Also, ich habe so angefangen das ich mir in der Hilfe-Datei zur Powershell mal die Einführung durchgelesen habe und dann alles Schritt für Schritt aus dem Netz gezogen habe wenn ich was nicht verstanden habe. Wenn du Windows 7 verwendest, starte mal den "Windows Powershell ISE" Editor und drücke F1 dort findest du die Einführung.

und gleich noch ne Frage. Wie kann ich Variablen konvertieren. Finde weder im Handbuch noch im Netz was passendes
in was willst du die Variable konvertieren ?
Bitte warten ..
Mitglied: Gundelputz
04.06.2013 um 09:47 Uhr
Super.
bei den Variablen habe ich zum rechnen zwei Stück als [int] deklariert. will ich nun in $var1 = $zaehler übergeben bekomme ich folgende Fehlermeldung:

Der Wert "System.Object[]" vom Typ "System.Object[]" kann nicht in den Typ "System.Int32" konvertiert werden.
Bei C:\usr\snmpget\t1.ps1:25 Zeichen:6

$var1 <<<< = $zaehler

+ CategoryInfo : MetadataError: ( [], ArgumentTransformationMetadataException
+ FullyQualifiedErrorId : RuntimeException

in Excel oder C gibt es da so Sachen wie var1 = Cint(zaehler)
also allgemein gesagt interessiert mich die umwandlung von Variablentypen in andere Typen zB int to str oder Str to int
Bitte warten ..
Mitglied: colinardo
04.06.2013 um 09:54 Uhr
Ah OK.
Das geht so:
[Convert]::toInt32($zaehler)
oder
[Convert]::toString($integer)
siehe auch hier: http://www.pavleck.net/powershell-cookbook/ch06.html
Bitte warten ..
Mitglied: colinardo
04.06.2013 um 10:01 Uhr
noch zur Info die Dir beim lernen von Powershell hilft:
Das CMDLet get-member kann dir Funktionen und Eigenschaften eines Objektes anzeigen die es unterstützt. Z.b. möchte ich wissen was für Methoden ich mit einem String ausführen kann. dazu übergebe ich einfach das entsprechende Objekt an get-member:
"Test" | get-member
und schon bekomme ich schön aufgelistet was ich mit dem String machen kann, bzw. welche Funktionen unterstützt werden.
Bitte warten ..
Mitglied: Gundelputz
04.06.2013 um 10:02 Uhr
dacht ich mir doch das dies keine Hürde sein dürfte. Warum dies nicht in der Hilfe steht ist mir ein Rätsel. Hier finde ich nur Convert-Path und zu toInt32 gleich gar nix. Schade.
Vielen dank noch mal.
Bitte warten ..
Mitglied: Gundelputz
04.06.2013 um 10:05 Uhr
get-member ist genau das was ich gesucht habe. Ich hoffe das hilft mir nicht mehr ganz so simple Fragen zu stelle.
Bitte warten ..
Mitglied: colinardo
04.06.2013, aktualisiert um 10:13 Uhr
und noch was zur Hilfefindung:
get-help DeinSuchbegriff
zeigt dir verfügbare CMDLets an die mit dem Suchbegriff zu tun haben.
ansonsten kannst du mit Powershell auch die ganze Welt der .NET-Funktionen oder COM-Objekten benutzen wenn du willst.

So denke das ist mal genug Stoff fürs erste ...
Nun viel Spaß beim lernen, du wirst sehen, einmal dran gewöhnt wilst du Batch nicht mehr sehen.
Wenn noch irgendwelche Fragen auftauchen kannst du dich gerne per PM an mich wenden.

(p.s. Bitte markiere den beitrag noch als gelöst, merci)
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
Bestimmte Daten aus eine CSV-Datei in eine Excel-Tabelle importieren (2)

Frage von MariaElena zum Thema VB for Applications ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...