Powershell Arrays deklarieren füllen abfragen ???
Hallo Leute,
bin Anfänger in PS und obwohl ich wieder viele Seiten PS gelesen hab ist mir
immer noch schleierhaft wie das mit den Array in PS ist ??? ;-(
Also... so sieht für mich ein Array aus... klar, verständlich, logisch !!!
Dim arr(2,3) ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
bei PS wiederum such ich mir einen Wolf wie man
ein ganz normales Array anlegt währe nett wenn Ihr mir ein paar
Antworten geben könntet auf folgende Fragen
1. Wie erzeuge ich ein normales Stringarray ohne Inhalt in PS ?
z.B Dim Arr01() String_;
ich habs so versucht [string] $Arr01=""
2. Wie erzeuge ich ein mehrdimensionales Int oder Stringarray ohne Inhalt in PS ?
z.B Dim Arr01(X,Y) String
3. Wie lese ich Arrays aus in PS ?
z.B
a=Arr01(1,2)
echo a
Thanks
der Vipy
bin Anfänger in PS und obwohl ich wieder viele Seiten PS gelesen hab ist mir
immer noch schleierhaft wie das mit den Array in PS ist ??? ;-(
Also... so sieht für mich ein Array aus... klar, verständlich, logisch !!!
Dim arr(2,3) ' Which has 3 rows and 4 columns
arr(0,0) = "Apple"
arr(0,1) = "Orange"
arr(0,2) = "Grapes"
arr(0,3) = "pineapple"
arr(1,0) = "cucumber"
arr(1,1) = "beans"
arr(1,2) = "carrot"
arr(1,3) = "tomato"
arr(2,0) = "potato"
arr(2,1) = "sandwitch"
arr(2,2) = "coffee"
bei PS wiederum such ich mir einen Wolf wie man
ein ganz normales Array anlegt währe nett wenn Ihr mir ein paar
Antworten geben könntet auf folgende Fragen
1. Wie erzeuge ich ein normales Stringarray ohne Inhalt in PS ?
z.B Dim Arr01() String_;
ich habs so versucht [string] $Arr01=""
2. Wie erzeuge ich ein mehrdimensionales Int oder Stringarray ohne Inhalt in PS ?
z.B Dim Arr01(X,Y) String
3. Wie lese ich Arrays aus in PS ?
z.B
a=Arr01(1,2)
echo a
Thanks
der Vipy
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 235025
Url: https://administrator.de/contentid/235025
Ausgedruckt am: 08.11.2024 um 21:11 Uhr
20 Kommentare
Neuester Kommentar
Hi,
wie ein Array erstellt wird hat Xaero ja schon geschrieben, du musst aber bei Multidimensionalen Arrays in Powershell so darauf zugreifen:
wie schon mehrfach geschrieben, schau dir die NET Klassen an: http://msdn.microsoft.com/en-us/library/ms229335%28v=vs.90%29.aspx
Die kannst du alle auch in Powershell verwenden...
Schöne Beispiele dazu mal hier, damit du mal siehst was dir entgeht, wenn du kein NET sprechen kannst :
Grüße Uwe
wie ein Array erstellt wird hat Xaero ja schon geschrieben, du musst aber bei Multidimensionalen Arrays in Powershell so darauf zugreifen:
$MultiArray = @((1,2,3),(40,50,60))
# gibt '2' aus
$MultiArray[1]
wie schon mehrfach geschrieben, schau dir die NET Klassen an: http://msdn.microsoft.com/en-us/library/ms229335%28v=vs.90%29.aspx
Die kannst du alle auch in Powershell verwenden...
Schöne Beispiele dazu mal hier, damit du mal siehst was dir entgeht, wenn du kein NET sprechen kannst :
#---------- Hashtables Key = > Wert Paare
$ht = @{Key1="Wert";Key2="Wert2"}
# gibt den wert von 'Key1' aus
$ht.Key1
# Einen Wert zur Hashtable hinzufügen:
$ht.NeuerKey = "Neuer Wert"
$ht
#-------- immer Sortierte Liste erstellen
$sortedList = New-Object System.Collections.SortedList
$sortedList.Add("C","Wert1")
$sortedList.Add("G","Wert2")
$sortedList.Add("A","Wert2")
# gibt immer eine nach Name sortierte Liste aus, egal wann man ein Objekt hinzufügt
$sortedList
# ---------- Stack 'LIFO' (Last In First Out)
$stack = New-Object System.Collections.Stack
$stack.Push("Erster Wert")
$stack.Push("Zweiter Wert")
$stack.Push("Dritter Wert")
# liefert 'Dritter Wert'
$stack.Pop()
# liefert 'Zweiter Wert'
$stack.Pop()
# ------------ Qeue 'FIFO' (First in First Out)
$queue = New-Object System.Collections.Queue
$queue.Enqueue("Wert1")
$queue.Enqueue("Wert2")
# liefert 'Wert1'
$queue.Dequeue()
# liefert 'Wert2'
$queue.Dequeue()
Grüße Uwe
Das kann ja auch so nicht funktionieren...machs so:
weitere Varianten zum initialisieren von Arrays: http://stackoverflow.com/questions/226596/powershell-array-initializati ...
z.B.
oder
wenn das Array bereits mit einer festen Anzahl initialisiert ist füllst du es wie gehabt:
dynamische Arrays sind auch kein Problem:
du siehst die Möglichkeiten sind fast unbegrenzt ...
p.s. hast du hier noch immer nicht gelernt wie man Code mit Tags auszeichnet ???!!!
# leeres Array of Strings erstellen
[string[]]$g_str_Arr_MSG = @()
#Array füllen ...
for ($i=0; $i -lt 3; $i++){
# Wert zum Array hinzufügen
$g_str_Arr_MSG += "Ein Wert"
}
#Array auslesen ...
for ($i=0; $i -lt $g_str_Arr_MSG.Length; $i++){
write-host $g_str_Arr_MSG[$i]
}
z.B.
[string[]]$g_str_Arr_MSG = @("")*3
[string[]]$g_str_Arr_MSG = new-object string 3
[string[]]$g_str_Arr_MSG = new-object string 3
#Array füllen ...
for ($i=0; $i -lt 3; $i++){
$g_str_Arr_MSG[$i] = "Ein Wert"
}
#Array auslesen ...
for ($i=0; $i -lt $g_str_Arr_MSG.Length; $i++){
write-host $g_str_Arr_MSG[$i]
}
dynamische Arrays sind auch kein Problem:
$arrayList = New-Object System.Collections.ArrayList
$arrayList.Add("Test")
$arrayList.Add("Test2")
echo $arrayList
p.s. hast du hier noch immer nicht gelernt wie man Code mit Tags auszeichnet ???!!!
Zitat von @Viper-Berlin:
nur noch eine kurze Frage warum schreibt man..
[string[]]$g_str_Arr_MSG = new-object string 3
weil du ein Array aus Strings deklarierst und keine einzelne [string]-Variablenur noch eine kurze Frage warum schreibt man..
[string[]]$g_str_Arr_MSG = new-object string 3
aber das das explizite deklarieren mache ich in Powershell ziemlich selten da .NET die Typen selber zuweist und wenn du einem Index im Array einen String zuweist weiß .NET das schon und bekommt dementsprechend den Typ String.
Hier hilft dir die Funktion getType() beim bestimmen des Typs eines Objektes
[string[]]$array = @()
# Array aus Strings
$array.GetType()
# Einzelner String
"Test".getType()
muss leider solche Anfängerfragen stellen weil die Syntax ist die Hölle von PS
es gibt in Powershell halt eine Menge von Abkürzungen und mehrere Wege die zum Ziel führen, wie in Batch halt auch. Man kann sie nutzen muss es aber nicht. Aller Anfang ist schwer ...Grüße Uwe
Zitat von @Viper-Berlin:
Das Ergebnis ist falsch, bekomme ein Blank in String der gar nicht definiert wurde
ich habe auch hinten an jeder Anweisung ein ; drangehängt das wohl das ende des Befehls
bedeutet ? so das keine nachstehenden Blank an den String angehängt werden.
Wert= Gefüllt mit:0
Wert= Gefüllt mit:1
Wert= Gefüllt mit:2
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
entweder so:Das Ergebnis ist falsch, bekomme ein Blank in String der gar nicht definiert wurde
ich habe auch hinten an jeder Anweisung ein ; drangehängt das wohl das ende des Befehls
bedeutet ? so das keine nachstehenden Blank an den String angehängt werden.
Wert= Gefüllt mit:0
Wert= Gefüllt mit:1
Wert= Gefüllt mit:2
Drücken Sie die Eingabetaste, um den Vorgang fortzusetzen...:
write-host "Wert=$($g_str_Arr_MSG[$i])"
$var = "Wert=" + $g_str_Arr_MSG[$i]
write-host $var
also ich geh bei Powershell immer ein Schritt vorwärtz und 3 zurück.
Ich weis nicht ob Powershell wirklich gut ist oder nur ein Modeerscheinung also ein VB VBS WSH Code kann man sofort lesen alles
klar
hier googelt man Stunden, forstet 100 von Foren durch damit man ein Script schreiben kann ???
also das ist doch genau das Gegenteil von dem was eine Scriptsprache soll ???
leicht verständlich, klar in der Syntax, einfach zu lernen, schnell umzusetzen.
Wenn du einfach so drauf los legst ohne dich mal in die Details eingelesen zu haben kein Wunder ... Wenn du es nicht so schaffst besorg dir halt ein Buch, oder lass es. Ich habe mit der Sprache keine Probleme... Ich denke dein Problem liegt daran das du zu eingefahren bist. Neues lernen tut dem Gehirn gut ...Ich weis nicht ob Powershell wirklich gut ist oder nur ein Modeerscheinung also ein VB VBS WSH Code kann man sofort lesen alles
klar
hier googelt man Stunden, forstet 100 von Foren durch damit man ein Script schreiben kann ???
also das ist doch genau das Gegenteil von dem was eine Scriptsprache soll ???
leicht verständlich, klar in der Syntax, einfach zu lernen, schnell umzusetzen.
Ich sag nochmal, lesen, lesen lesen...: http://www.powershellpraxis.de/
Grüße Uwe
Das kann ich nur bestätigen, und ich bin auch Anfänger in der PS. Du wetterst hier seit Tagen über Powershell - irgendwie alles sch... - aber allem Anschein nach fehlen dir die elementarsten Grundlagen. Wenn dir die vorgeschlagenen Links nicht zusagen, probier diese hier (wird doch wohl was für dich dabei sein, oder?):
http://www.admin-source.de/BlogDeu/links
Technet-Forum:
http://social.technet.microsoft.com/Forums/de-DE/powershell_de/threads? ...
Hey scripting guy:
http://blogs.technet.com/b/heyscriptingguy/?Redirected=true
Script-Center:
http://gallery.technet.microsoft.com/ScriptCenter/
Technet, What Can I Do With Windows PowerShell?
http://technet.microsoft.com/en-us/library/ee332526.aspx
Technet, Windows PowerShell Management Cmdlets:
http://technet.microsoft.com/de-de/library/hh849827.aspx
Technet, Windows PowerShell Tip of the Week:
http://technet.microsoft.com/en-us/library/ff730948.aspx
Technet, Windows PowerShell Tips:
http://technet.microsoft.com/en-us/library/ee692948.aspx
System.Windows.Forms Namespace:
http://msdn.microsoft.com/en-us/library/system.windows.forms%28VS.80%29 ...
Dictionary-Object
http://technet.microsoft.com/en-us/library/ee198718.aspx
Tutorial:
http://www.computerperformance.co.uk/powershell/
Cmtlets:
http://www.colorconsole.de/PS_Windows/en/
WMI:
http://social.msdn.microsoft.com/Search/de-DE?query=wmi&emptyWaterm ...
Win32 Classes:
http://msdn.microsoft.com/en-us/library/aa394084%28v=vs.85%29.aspx
Tutorials:
http://www.powershellpro.com/powershell-tutorial-introduction/powershel ...
GUI-Programmierung:
http://www.martinlehmann.de/wp/download/powershell-gui-programmierung-f ...
http://powershell.com/cs/
String-Manipulation:
http://www.amandhally.net/tag/string-manipulation-in-powershell/
http://www.amandhally.net/tag/text-manipulation-in-powershell/
https://blogs.technet.com/b/heyscriptingguy/archive/2011/09/21/two-simpl ...
http://newdelhipowershellusergroup.blogspot.de/p/tutorial-series.html
Remote:
http://technet.microsoft.com/en-us/library/dd819505.aspx
http://www.computerperformance.co.uk/powershell/powershell_remote.htm
Und den auch noch:
Neues in PS 3.0 und 4.0:
http://technet.microsoft.com/en-us/library/hh857339
Gruß
ANKH
Zitat von @Viper-Berlin:
das Skript hat nicht funktioniert (nur 3 " Zeichen??? )
write-host "Wert="$g_str_Arr_MSG[$i]";
hatte das oben kurz nach dem Post noch korrigiert, sorry, muss natürlich so lauten:das Skript hat nicht funktioniert (nur 3 " Zeichen??? )
write-host "Wert="$g_str_Arr_MSG[$i]";
write-host "Wert=$(g_str_Arr_MSG[$i])"
Zitat von @Viper-Berlin:
Super danke !
jetzt setze ich mich nur noch für 2 Jahre in den Keller und dann klappts auch
Thanks Vipy
Super danke !
jetzt setze ich mich nur noch für 2 Jahre in den Keller und dann klappts auch
Thanks Vipy
Du sollst ja nicht alles lesen, sondern das raussuchen, was dir am meisten bringt.
1 Jahr und 11 Monate genügen da völlig, glaub mir.
Gruß
ANKH
Zitat von @Viper-Berlin:
Jo danke colinardo,
den hatte ich schon ! kommt nur ein falsches Ergebnis raus ?
write-host "Wert=$g_str_Arr_MSG[$i]"
öhm ich hatte das so geschrieben s. oben:Jo danke colinardo,
den hatte ich schon ! kommt nur ein falsches Ergebnis raus ?
write-host "Wert=$g_str_Arr_MSG[$i]"
write-host "Wert=$($g_str_Arr_MSG[$i])"
echo "Heute ist der $((get-date).ToShortDateString())"