[Powershell] Karakters tot X verwijderen uit var

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 10:07
Hoi tweakers,

Ik ben voor het eerst bezig met powershell werk en het gaat best aardig, ik loop alleen vast op het volgende.
Ik heb een variabele met deze inhoud:

C:\abc\logs\XXXXXXX005-vmrestorecommandoutput.log:48:Elapsed processing time: 00:01:45

Waarbij het stuk "XXXXXXX005-vmrestorecommandoutput.log:XX:" elke keer anders zal zijn qua inhoud.

Wat ik wil is het hele stuk tot en met de laatste ":" (vanaf links) verwijderen.
Dus dat er alleen nog maar "Elapsed processing time: 00:01:45" in de variabele staat.
(waarbij de tijd die daar staat ook elke keer anders is.)

Wat mij niet lukt is de variabele data in de string tot en met de tweede : vanaf links gezien te verwijderen.

Als iemand mij hiermee zou kunnen helpen in powershell n00b taal dan zou dat top zijn! :)

Alle reacties


Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 19-08 11:42

Cloud

FP ProMod

Ex-moderatie mobster

Is het niet makkelijker om je probleem om te draaien? Dus een substring operatie vanaf 'Elapsed' doen en dat dus afsplitsen in een nieuwe string? Als 'Elapsed' de constante factor in je string is, zou ik me daarop richten.

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • marsman
  • Registratie: Juni 1999
  • Laatst online: 08:36
code:
1
2
3
4
$item="C:\abc\logs\XXXXXXX005-vmrestorecommandoutput.log:48:Elapsed processing time: 00:01:45"

$item.Substring(53, 33) ## 33 karakters vanaf 53
$item.Substring($item.Length- 33, 33) ## 33 karakters terug vanaf eind

_/\_/\_/\__/\___/\___________"Braindead, now it's real"


Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 19-08 11:42

Cloud

FP ProMod

Ex-moderatie mobster

Zoiets ja, maar dan zou ik geen 53 typen, maar die 53 opzoeken met iets als:

code:
1
$positie = $item.IndexOf("Elapsed")

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • marsman
  • Registratie: Juni 1999
  • Laatst online: 08:36
Als de lengte variabel is inderdaad handiger, dan wordt het:
code:
1
 $item.Substring($item.IndexOf("Elapsed"), $item.Length -$item.IndexOf("Elapsed"))



En de uitleg
code:
1
2
3
4
5
 $item.Substring = Haal een gedeelte op...

(     Beginpositie                     ,          Aantal karakters)
(   $item.IndexOf("Elapsed")           ,     $item.Length         -  $item.IndexOf("Elapsed")   )
(     [Positie waar "Elapsed" begint ] ,     [Totaal karakters   -  Positie waar "Elapsed" begint])

[ Voor 52% gewijzigd door marsman op 28-06-2017 10:57 ]

_/\_/\_/\__/\___/\___________"Braindead, now it's real"


Acties:
  • 0 Henk 'm!

  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 10:07
Bedankt! Ik ga ermee aan de slag, leuke scripttaal dat Powershell, als Unix man had ik geen idee dat er zoiets krachtigs was onder Windows.

Acties:
  • 0 Henk 'm!

  • PageFault
  • Registratie: April 2002
  • Laatst online: 12:20
R3m3d7 schreef op woensdag 28 juni 2017 @ 11:02:
Bedankt! Ik ga ermee aan de slag, leuke scripttaal dat Powershell, als Unix man had ik geen idee dat er zoiets krachtigs was onder Windows.
Daar gingen ook wel wat jaartjes overheen, maar de versie sinds 2012 doet niet meer onder voor BASH.

Acties:
  • 0 Henk 'm!

  • R3m3d7
  • Registratie: Juli 2007
  • Laatst online: 10:07
Dit is hem geworden
$duration = ([regex]::matches($var, "Elapsed.*$")).Value

Acties:
  • 0 Henk 'm!

  • Gé Brander
  • Registratie: September 2001
  • Laatst online: 27-08 22:48

Gé Brander

MS SQL Server

R3m3d7 schreef op woensdag 28 juni 2017 @ 11:02:
Bedankt! Ik ga ermee aan de slag, leuke scripttaal dat Powershell, als Unix man had ik geen idee dat er zoiets krachtigs was onder Windows.
Dit is iets wat ik vaak merk. Veel Unix mensen hebben dit gemist of zo ;)

Vroeger was alles beter... Geniet dan maar van vandaag, morgen is alles nog slechter!


Acties:
  • 0 Henk 'm!

  • [Jules]
  • Registratie: Maart 2000
  • Laatst online: 13:39

[Jules]

Confusion in confusion

Je invoer ziet eruit als de uitvoer van een Select-String. Is het dat ook?
In dat geval kun je gewoon de property Line gebruiken. Scheelt een extra pattern match.

Knowing others is to be clever.
Knowing yourself is to be enlightened.
Overcoming others requires force.
Overcoming yourself requires strength.

Pagina: 1