Zum Inhalt wechseln


Foto

Powershell String to Object


  • Bitte melde dich an um zu Antworten
9 Antworten in diesem Thema

#1 mtf

mtf

    Junior Member

  • 118 Beiträge

Geschrieben 29. Juli 2009 - 13:11

Hallo Scripter

Ich versuche und suche nun schon lange nach einer Möglichkeit ein String zu einem Object zu konvertieren.

Das ist bestimmt doch möglich, oder?

Besten Dank

#2 blub

blub

    Moderator

  • 6.805 Beiträge

Geschrieben 29. Juli 2009 - 14:05

hi,
versteh ich nicht ganz. Ein String ist ein Objekt vom Typ System.String

PS C:\> $a="MCSEboard find ich gut"
PS C:\> $a.length
22

#$a="MCSEboard find ich gut"
#ist gleichbedeutend mit
#$a=[system.string]"MCSEboard find ich gut"

#die Objectmehtoden und Eigenschaften bekommst du mit
PS C:\> $a | get-member


   TypeName: System.String

Name             MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()
CompareTo        Method                System.Int32 CompareTo(Object value), System.Int32 CompareTo(String strB)
Contains         Method                System.Boolean Contains(String value)
CopyTo           Method                System.Void CopyTo(Int32 sourceIndex, Char[] destination, Int32 destinationIn..
EndsWith         Method                System.Boolean EndsWith(String value), System.Boolean EndsWith(String value, ..
Equals           Method                System.Boolean Equals(Object obj), System.Boolean Equals(String value), Syste..
GetEnumerator    Method                System.CharEnumerator GetEnumerator()
GetHashCode      Method                System.Int32 GetHashCode()
GetType          Method                System.Type GetType()
...


Bearbeitet von blub, 29. Juli 2009 - 14:31.

Nec Cupias, Nec Metuas


#3 mtf

mtf

    Junior Member

  • 118 Beiträge

Geschrieben 30. Juli 2009 - 05:49

Dann suche ich wohl am falschen Ort.
Ich möchte folgendes:
PS C:\> $a="MCSEboard find ich gut"
PS C:\> $a[0]
M
PS C:\>
Ich möchte, dass nicht M zurückkommt sondern "MCSEboard find ich gut".

Kann mit jemand einen Tipp geben, wir ich da hin komme?

#4 Dukel

Dukel

    Board Veteran

  • 6.224 Beiträge

Geschrieben 30. Juli 2009 - 06:16

PS C:\> $a="MCSEboard find ich gut"
PS C:\> $a
MCSEboard find ich gut

;)

#5 mtf

mtf

    Junior Member

  • 118 Beiträge

Geschrieben 30. Juli 2009 - 06:32

Ich muss wohl noch weiter ausholen:

Mein Script list ein Textfile ein mit Username und Ablaufdatum. Nun bin ich in einer foreach-Schalufe und lese alle Userdaten ein
Username in die Variable $Name und das Ablaufdatum in die Variable $ExpDate.
Nun möchte ich diese Variabelwerte zwischenspeichern und danach sortiert nach $ExpDate zurückgeben.

#6 Dukel

Dukel

    Board Veteran

  • 6.224 Beiträge

Geschrieben 30. Juli 2009 - 09:12

Ich muss wohl noch weiter ausholen:

Mein Script list ein Textfile ein mit Username und Ablaufdatum. Nun bin ich in einer foreach-Schalufe und lese alle Userdaten ein
Username in die Variable $Name und das Ablaufdatum in die Variable $ExpDate.
Nun möchte ich diese Variabelwerte zwischenspeichern und danach sortiert nach $ExpDate zurückgeben.


Wie sieht das Text File aus?
Du suchst ein Array bzw. Hash Tabelle.

#7 blub

blub

    Moderator

  • 6.805 Beiträge

Geschrieben 30. Juli 2009 - 22:52

Ich muss wohl noch weiter ausholen:

Mein Script list ein Textfile ein mit Username und Ablaufdatum. Nun bin ich in einer foreach-Schalufe und lese alle Userdaten ein
Username in die Variable $Name und das Ablaufdatum in die Variable $ExpDate.
Nun möchte ich diese Variabelwerte zwischenspeichern und danach sortiert nach $ExpDate zurückgeben.


und du erwartest, dass wir aus deinem ersten und dritten Post auf diese Aufgabenstellung schliessen sollen? :rolleyes:

Bearbeitet von blub, 31. Juli 2009 - 07:34.

Nec Cupias, Nec Metuas


#8 mtf

mtf

    Junior Member

  • 118 Beiträge

Geschrieben 03. August 2009 - 15:14

Wie sieht das Text File aus?
Du suchst ein Array bzw. Hash Tabelle.


Der Tipp von Dukel hat mich doch weitergebracht.

Ich habe ein TXT File:
"hans" 03.08.2009 16:50,
 "Test-ok" 11.04.2010 15:21,
 "test-Warning" 17.08.2009 13:30,
 "Users" 23.04.2009 18:06,
 "aaa" 23.04.2004 18:12,
 "bbbbbbb " 23.04.2006 18:38

Dieses File kann ich einlesen und ausgeben. Leider verstehe ich die Sortierung noch nicht ganz.

$UserExpTable  = @()

$Users = Get-Content "Users.txt"


foreach ($line in $Users)
	{
	$Name = $line -match '"(.*)"' 
	$Name = $Matches[1]
	$ExpDate = $line -match '\d{2}\.\d{2}\.\d{4}'
	$ExpDate = $Matches[0]
	$ExpDate = [datetime]::ParseExact($ExpDate, "dd.MM.yyyy", $null)
	
	$UserExpTable += @{$Name="$ExpDate"}
	}
$UserExpTable.GetEnumerator() | Sort-Object Value

zurück bekommen ich
Name                       Value
----                           -----           
Users                          04/23/2009 00:00:00    
aaa                            04/23/2004 00:00:00 
bbbbbbb                        04/23/2006 00:00:00 
hans                           08/03/2009 00:00:00 
Test-ok                        04/11/2010 00:00:00
test-Warning                   08/17/2009 00:00:00

Die Sortierung funktioniert nicht nach Name und auch nicht nach Value.

1000 Dank für eure Hilfe!

#9 mtf

mtf

    Junior Member

  • 118 Beiträge

Geschrieben 05. August 2009 - 06:19

Der Fehler wurde erkannt:
$UserExpTable = @()
Es braucht keine runden Klammern, sondern geschweifte!
$UserExpTable = @{}

#10 Dukel

Dukel

    Board Veteran

  • 6.224 Beiträge

Geschrieben 05. August 2009 - 09:23

Der Fehler wurde erkannt:
$UserExpTable = @()
Es braucht keine runden Klammern, sondern geschweifte!
$UserExpTable = @{}


Klar. Sonst ists ein Array und keine Hash Tabelle.