2016-06-08 7 views
0

Ich bin ein Anfänger bei der Verwendung von Powershell. Ich arbeite an einem Server mit Powershell v2.0.Powershell v2.0 extrahieren Teilzeichenfolge

Ich habe einen Valutatag einer Teil ($ d1) zugeordnet: 2016-06-08-07.30.03.119000-240

ich nur das Datum/Zeit Teil erhalten möchten: 2016-06-08- 07.30.03

Ich konnte Folgendes tun, um zu bekommen: 2016-06-08-07. 30. 03

echo $d1 > $tempfile 
$d1a = (Get-Content $tempfile | %{ $_.Split('.')[0]; }) 
$d1b = (Get-Content $tempfile | %{ $_.Split('.')[1]; }) 
$d1c = (Get-Content $tempfile | %{ $_.Split('.')[2]; }) 
$d1 = "$d1a.$d1b.$d1c" 

Gibt es eine Möglichkeit, den gewünschten Wert ohne die zusätzlichen Leerzeichen zu erhalten?

Ich habe versucht:

$d1 = ($d1a, $d1b, $d1c -join ".") 

aber das gibt:.. System.Object [] System.Object [] System.Object []

Jede Hilfe wird geschätzt.

Antwort

0

Der Teil entnehmende hat eine gut definierte Länge (19 Zeichen), so dass der einfachste Weg, um die Substring() Methode zu verwenden, wäre:

$d1.Substring(0, 19) 
+0

Danke, das funktionierte! Ich hatte zuvor Substring ausprobiert, aber immer Fehler bekommen, daher musste ich meine Syntax falsch haben. –

+0

Das funktionierte gut aus der Powershell-Befehlszeile, aber wenn ich das Skript ausführte, funktionierte es, aber auch den folgenden Fehler ausgelöst: –

+0

'Methode Aufruf fehlgeschlagen, weil [Microsoft.PowerShell.Commands.MatchInfo] keine Methode namens 'enthält Teilzeichenfolge '. Bei E: \ DBA \ Skripte \ SchedTasks \ Db2diag \ diagAnalysis_Extract.ps1: 69 Zeichen: 21 + $ d1a = $ d1.Substring <<<< (0, 19) + CategoryInfo: InvalidOperation: (Teilzeichenfolge: String) [], RuntimeException + FullyQualifiedErrorId: MethodNotFound' –