Powershell Verständnisproblem

  • Themenstarter Themenstarter sw33tlull4by
  • Beginndatum Beginndatum
S

sw33tlull4by

Guest
Hi!
Ich arbeite mich zZ in Powershell ein.
Ich habe da ein paar Fragen.
In Powershell ist ja alles ein Object.
So ist zB ein String ein Object.
Ich kann auf diesem Object nun Methoden ausführen.
Wenn ich nun eingebe:

PS:>[string]|get-member -type method

Bekomme ich weder die Methode substring noch split.
Nun ist split ja komischwerweise ein Operator definiert für Strings.
Macht eigentlich nur sinn weil Powershell implizietes Casting betreibt, und ein Objekt somit kurzerhand in einen String umgewandelt werden kann.

Kann mir also vielleicht jemand erklären wiso split ein Operator und keine Methode des Objektes String ist und wiso substring nicht aufgefürht ist?
denn
PS:>[string]|get-member|findstr "subst" ist [void].

Und auch wiso join statisch gemacht wurde so das man immer [string]::join eingeben muss, anstellen von "string".join("+","string2")
Mfg

sw33t
 
Zuletzt bearbeitet:
Hab zwar von Powershell absolut null Ahnung, aber über Twitter kam gerade folgende Nachricht von PowerShellGuy:

http://twitter.com/PowerShellGuy hat gesagt.:
@habofeed : the [string] means the type string "Mystring" | get-member will work, to see static methods on type string [string] | gm -static

Keine Ahnung, ob dir das weiter hilft. ;)
 
Ja, hat viel geholfen danke.
Ich war gestern abend wohl etwas zu müde.
Worauf der Tweet anspielte war,die Tatsache das [string]|gm und
"hallo"|gm unterschiedliche Methoden/Parameter,[string]gm -static und
"hallo"|gm -static aber gleiche Methoden/Parameter ausgeben.

Den Fehler den ich gemacht habe war, die Methoden von [string] abzufragen,anstelle das ich nachfrage welche Methoden/Attribute eine Instanz der Klasse String hat, dort sind substring und split vorhanden,beschreibung ist zwar abgekniffen mittels .. und |format-list macht da auch keinen Unterschied, aber man wird draus schlau.

Das Join aber static ist und bleibt scheint wirklich daran zu liegen das man den internen Castmechanismus auf der Kommandozeile voll ausnutzen will und es einfacher mit dem Kürzen '+' haben wollte.

Was mich etwas verwundert sind die Methoden/Attribute welche [string]|gm ausgibt.
Dies sind anscheinen keine Methoden/Attribute,welche String zueigen sind(abgesehen von [string]|gm -static)sondern welche zu den Castoperatoren/bzw. den Datentypen(auf .Net-Ebene(?)) an sich gehoeren,beispiel ist [string].getType() und "hallo".getType() 1. list sich zwar komisch sind aber beide valide und geben beide das gleiche zurrück.

Vielen dank für die Mühe mit dem verfolgen der Tweets.
Mfg

sw33t
 
Zuletzt bearbeitet:
Zurück
Oben