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

Powershell Arrayvariable in Schleife füllen

Frage Entwicklung

Mitglied: fisicgn

fisicgn (Level 1) - Jetzt verbinden

10.01.2014, aktualisiert 14:27 Uhr, 6772 Aufrufe, 5 Kommentare

Hallo zusammen,

ich möchte folgendes bewerkstelligen:

Ich habe eine Arrayvariable:
$store = @("Computer1_SN","Computer2_SN","Computer3_SN","Computer4_SN","Computer5_SN")
Nun durchlaufe ich bspw. dreimal eine Schleife:
for ($i=1; $i -le 3; $i++) {$store.ComputerX_SN = "Wert"}
Diese Schleife wird unterschiedlich oft durchlaufen (1 - 5 mal).
Ich möchte nun in meiner Arrayvariable das Feld "ComputerX_SN" dynamisch ansprechen.
Wie kann ich also das "X" als Variable angeben?

Ich hoffe, es ist verständlich und danke schon mal für die Antworten.

Danke & Grüße

Mitglied: colinardo
10.01.2014, aktualisiert um 13:21 Uhr
Hallo fisicgn, Willkommen im Forum!
das was du vorhast hat keinen Sinn denn du kannst dem Array-Element so selber keinen zusätzlichen Wert zuordnen, höchstens den Array-Wert neu setzen. Du solltest hier stattdessen mit einer Hashtable arbeiten:
01.
$store = @{"Computer1_SN"="";"Computer2_SN"="";"Computer3_SN"="";"Computer4_SN"="";"Computer5_SN"=""} 
02.
for ($i=1; $i -le 3; $i++) { 
03.
    $store["Computer$($i)_SN"] = "Das ist Testwert $i" 
04.
05.
echo $store
Grüße Uwe
Bitte warten ..
Mitglied: fisicgn
10.01.2014, aktualisiert um 15:25 Uhr
Hallo Uwe,

ich habe deinen Vorschlag jetzt noch nicht getestet, aber er klingt soweit ganz gut.
Nur fällt mir dazu ein, warum ich kein Hash-Table verwenden wollte:
Ich würde abschließend gerne die Variable $store in eine csv-Datei exportieren. Und das habe ich mit meinem Array irgendwie einfacher hinbekommen:
$Array = @(.....)
[.....]
$Array | Export-Csv "C:\Array.csv" -NoTypeInformation -Delimiter:";"

Grüße
Markus
Bitte warten ..
Mitglied: colinardo
10.01.2014, aktualisiert um 15:30 Uhr
Zitat von fisicgn:
Ich würde abschließend gerne die Variable $store in eine csv-Datei exportieren. Und das habe ich mit meinem Array
irgendwie einfacher hinbekommen:
Hashtable Export in CSV, kein Problem:
01.
$obj = New-Object PSObject -Property $store 
02.
$obj | Export-Csv "C:\Array.csv" -Delimiter ";" -NoTypeInformation
Grüße Uwe
Bitte warten ..
Mitglied: fisicgn
10.01.2014, aktualisiert um 16:02 Uhr
Hm, soweit auch ok...
ich brauche aber ein Table (Array oder Hash) in welchem ich auch mehrere Zeilen einspeichern kann. Also die Bezeichnungen "ComputerX_SN" sollen die Zeilentitel darstellen

Ich versuche mein Problem nochmal zu abstrahieren:
Ich gehe also bspw. in einer weiteren Schleife welche bspw. die Raumnummern darstellt

- Von Raumnummer 1 bis Raumnummer 10
- Schaue wie viele PCs im Raum sind (1-5) und erkenne die Seriennummern
- Jeder PC hat eine eigenständige Nummer (1-5) zusätzlich zur Seriennummer

- Raum 1 hat drei PCs; PC1, PC3 und PC5. PC2 und PC4 fehlen

- Nun soll eine Variable (Hash oder Array) gefüllt werden
Titelzeile: Computer1_SN;Computer2_SN,Computer3_SN,Computer4_SN,Computer5_SN,
1. Zeile (=1. Raum): Serial1;;Serial3;;Serial5
usw.

Grüße
Markus

PS:
Muss ich vielleicht einfach einmal das Hash-Table erstellen so wie du es geschrieben hast, und dann erstelle ich noch ein Array und hänge dann immer am Ende der Schleife den Hash-Table ins Array an:
$Array += $Hashtable
Bitte warten ..
Mitglied: colinardo
10.01.2014, aktualisiert um 16:59 Uhr
Zitat von fisicgn:
$Array += $Hashtable
das ist schon der richtige Ansatz:
Du erstellst ein leeres Array, dann machst du aus einem Array in dem die Computernamen stehen ein PS-Objekt und hängst das an dein Array an. Das sind dann quasi die Überschriften. Für die Räume arbeitest du dann mit einer Hashtable und weist in dieser den Rechnern die Seriennummern zu machst daraus ein PS-Object und hängst dies dann wieder an das Array dran, usw.
01.
$arr = @() 
02.
# Überschriften  
03.
$arr += New-Object PSObject -Property @("Computer1_SN","Computer2_SN","Computer3_SN","Computer4_SN","Computer5_SN") 
04.
 
05.
for ($i=1; $i -le 10; $i++) { 
06.
    # Zeile mit entsprechender Zuordnung zum Array hinzufügen 
07.
    $arr += New-Object PSObject -Property @{"Computer1_SN"="Serial1";"Computer2_SN"="Serial2";"Computer3_SN"="Serial3";"Computer4_SN"="Serial4";"Computer5_SN"="Serial5"} 
08.
09.
# Exportieren 
10.
$arr | Export-Csv "C:\Temp\test.csv" -Delimiter ";" -NoTypeInformation
denke jetzt sollte die Methode klar sein.

Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell CSV Auswertung in einer Schleife (3)

Frage von Johnny-CGN zum Thema Batch & Shell ...

Windows 10
Powershell 5 BSOD (8)

Tipp von agowa338 zum Thema Windows 10 ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...