gelöst Powershell - Substring(), split()

Mitglied: perseus21

perseus21 (Level 1) - Jetzt verbinden

19.11.2020 um 11:40 Uhr, 396 Aufrufe, 19 Kommentare

Hallo,
ich habe ein Problem in der Powershell, bei dem ich Hilfe benötige. Bisher konnte mir Google und Konsorten nicht helfen.
Was meine Fähigkeiten in Powershell anbelangt, so stufe ich mich als Anfänger ein.

Hier mein Problem:
ich hab in einer Variable die Werte:

worstationId=B11A
worstationName=ANTON_AUTO_TEST_B11A

Nun möchte ich die Werte hinter dem "=" extrahieren/weiterverwenden

Ich habe es mit split() und mit substring() probiert, aber ohne Erfolg.


Kann mir jemand weiterhelfen?


mfg
Dirk
Mitglied: emeriks
19.11.2020 um 11:42 Uhr
Zitat von perseus21:
worstationId=B11A
worstationName=ANTON_AUTO_TEST_B11A
PS ist kein Batch!
Also richtig so
Jetzt kannst Du z.B. $worstationName splitten nach "_"
E.
Bitte warten ..
Mitglied: TsukiSan
19.11.2020 um 11:51 Uhr
Hallo Dirk,

mal was zum Üben:
Grüße

Tsuki
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 13:54 Uhr
emeriks...
wie oben schon beschrieben liegen mir die Werte in einer Variable in Form

worstationId=B11A
worstationName=ANTON_AUTO_TEST_B11A

vor und benötige die Werte nach dem Komma. D.h. ich möchte nachher nur die folgenden Werte in einer Variablen haben:

B11A
ANTON_AUTO_TEST_B11A

Sehe ich das richtig, dass ich die Daten wie in deinem Beispiel erst in zwei Variablen aufteilen muss?
Und was bedeutet "_"? Meinst du damit den Unterstrich?

Gruß
Dirk

P.S.: Zur Auswahl des Themas blieb mir unter Entwicklung nur die Wahl Allgemein oder Bash & Shell, wobei ich Shell mit Powershell assoziiert habe. Sorry für den Fehler. Einen Menüpunkt für Powershell hatte ich leider nicht gefunden.
Bitte warten ..
Mitglied: Printe
LÖSUNG 19.11.2020, aktualisiert um 14:03 Uhr
Oder wenn die Daten aus einer Textdatei kommen und du Zeilenweise mehrere Werte verarbeiten willst dann
Mittels der Properties "$_.Key" und "$_.Value" innerhalb der For-each Schleife greifst du dann auf die Werte der jeweilige Zeile zu und kannst sie so weiterverarbeiten.

Alternativ bietet die Powershell für solch formatierte Dateien bereits einpassendes CMDLet an welches das ganze automatisch macht
Und schon sind die Daten schön in ne HashTable eingelesen .
Oder wenn du bei diesem Konstrukt nur die reinen "Values" haben willst auch kein Thema

Gruß P.
Bitte warten ..
Mitglied: emeriks
19.11.2020 um 14:03 Uhr
Ach so, du hast

Na dann eben
Bitte warten ..
Mitglied: mayho33
19.11.2020, aktualisiert um 15:56 Uhr
Zitat von perseus21:

Hallo,
ich habe ein Problem in der Powershell, bei dem ich Hilfe benötige. Bisher konnte mir Google und Konsorten nicht helfen.
Was meine Fähigkeiten in Powershell anbelangt, so stufe ich mich als Anfänger ein.

Hier mein Problem:
ich hab in einer Variable die Werte:

worstationId=B11A
worstationName=ANTON_AUTO_TEST_B11A

Nun möchte ich die Werte hinter dem "=" extrahieren/weiterverwenden

Ich habe es mit split() und mit substring() probiert, aber ohne Erfolg.


Kann mir jemand weiterhelfen?


mfg
Dirk

Wenn die Variable in Powershell so lauten würde:
Dann kannst du die Werte hinter dem "=" so extrahieren:
Ist es das was du brauchst?


EDIT:

UUUUUPS! Da war einer schneller! Aber lustig, dass wir den gleichen Ansatz verfolgt haben :D
Bitte warten ..
Mitglied: SlainteMhath
19.11.2020 um 16:01 Uhr
Moin,

geht noch kürzer:
:D

lg,
Slainte
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:12 Uhr
Nein.
Ich habe die Varaiable $var und in ihr steht der Text

worstationId=B11A
worstationName=ANTON_AUTO_TEST_B11A

Ich brauche:
B11A
ANTON_AUTO_TEST_B11A

Diese beiden Werte möchte ich nachher in irgendeiner Weise weiterverwenden.

Das Beispiel von Printe hat mir geholfen:

$x = (get-content '$var' -raw | ConvertFrom-StringData)
$x.values

Gruß
Dirk
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:18 Uhr
Jetzt muss ich nur noch verstehen, was in den zwei Zeilen genau geschieht.
was macht der Schalter -raw und das ConvertFrom-StringData?

Gruß
Dirk
Bitte warten ..
Mitglied: Printe
LÖSUNG 19.11.2020, aktualisiert um 16:27 Uhr
Zitat von perseus21:

Jetzt muss ich nur noch verstehen, was in den zwei Zeilen genau geschieht.
was macht der Schalter -raw und das ConvertFrom-StringData?
Der Schalter -raw sagt das die Textdatei beim Einlesen als ganzes und nicht als Array eingelesen werden soll. Bei Verwendung von ConvertFrom-StringData ist das angeraten da man sonst ein Array aus Hashtables bekommen würde und das wäre doppelt gemoppelt und wäre verwirrend.

ConvertFrom-StringData macht aus einer oder mehreren Zeilen die so aufgebaut sind wie deine also

Key = Value

eine sogenannte "Hashtable" mit dem ersten Wert vor dem Gleichheitszeichen als Key und dem dahinter als zugehörigem Value.

Was eine Hashtable ist kannst du hier nachschlagen
https://www.windowspro.de/script/hash-table-powershell-erzeugen-elemente ...

$x = (get-content '$var' -raw | ConvertFrom-StringData)
$x.values
Eine Anwendung ist übrigens falsch wenn $var schon den Text enthält brauchst du natürlich die Textdatei nicht mehr einlesen, außerdem werden Variablen innerhalb von Hochkommata nicht aufgelöst!
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:27 Uhr
Prima, Vielen Dank an alle. Jetzt bin ich wieder etwas schlauer

LG
Dirk
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:49 Uhr
Ja, P. Du hast recht.
Ich würde gerne mal mein Scriptcode einstellen. Wie bekomme das hin, dass er Zeilennummern voranstellt?
Bitte warten ..
Mitglied: Printe
19.11.2020, aktualisiert um 16:50 Uhr
<code> Quellcode </code>

screenshot - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:51 Uhr
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 16:51 Uhr
So funktioniert's
Bitte warten ..
Mitglied: mayho33
19.11.2020 um 19:17 Uhr
Zitat von perseus21:

$x = (get-content '$var' -raw | ConvertFrom-StringData)
$x.values

Da hast du dir das komplizierteste Beispiel ausgesucht. Und eigentlich ließt du so eher Content aus Files ein als bestehende Variablen.

Aber jeder wie er es am liebsten hat. Die Geschmäcker sind ja verschieden


Der Code in Zeile 2 funktioniert aber nur, weil du schon die Policy in deiner Session aktualisiert hast.

Powershell kann sich nicht selbst vom Script aus unrestricten, weil PS normaler schon "vor" dessen Ausführung verhindert wird.

Willst du ein PS-Script ausführen und temporär die ExecutionPolicy aussetzen machst du das so:

von der Console aus:
Bitte warten ..
Mitglied: perseus21
19.11.2020 um 21:40 Uhr
Danke für die Info.
Bitte warten ..
Mitglied: perseus21
19.11.2020, aktualisiert um 21:55 Uhr
Zitat von mayho33:
Aber jeder wie er es am liebsten hat. Die Geschmäcker sind ja verschieden


Da ich Anfänger bin, mach ich es nicht wie es mir gefällt. Wenn ich das Wissen hätte, würde ich es richtig machen.
Die Lösung hat halt funktioniert.
Hast du noch einen anderen Weg nach Rom?
Ich bin immer bereit was Neues zu lernen oder anders gesagt, wie es richtig gemacht wird...

Gruß
Dirk
Bitte warten ..
Mitglied: mayho33
19.11.2020 um 23:57 Uhr
Zitat von perseus21:

Zitat von mayho33:
Aber jeder wie er es am liebsten hat. Die Geschmäcker sind ja verschieden

Die Lösung hat halt funktioniert.
Hast du noch einen anderen Weg nach Rom?

Wie von mir und einigen anderen schon beschrieben. Das wäre meiner Ansicht nach der eigentliche Weg, weil leicht verständlich und, was nicht zu verachten ist, stabil und schnell.

Aber wie mein Lehrer immer sagte: "Nicht wie man etwas umsetzt, sondern, dass man es umsetzt ist wichtig."


Ich bin immer bereit was Neues zu lernen oder anders gesagt, wie es richtig gemacht wird...

Du kannst ja mal hier rein schauen:

https://docs.microsoft.com/en-us/powershell/scripting/learn/more-powersh ...

Hier eine Sammlung aller PS keywords:

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...

Grüße!
Bitte warten ..
Heiß diskutierte Inhalte
Benchmarks
M.2 SSD und RAM zu langsam
gelöst MarkowitschFrageBenchmarks22 Kommentare

Hallo zusammen, ich habe mir folgenden PC zusammengestellt : MB: ASUS - ROG Strix Z490-E Gaming Mainboard (90MB12P0-M0EAY0) CPU: ...

Datenbanken
SQL Null Abfrage
gelöst newit1FrageDatenbanken18 Kommentare

Hallo zusammen, ich versuche eine CSV in meine Datenbank zu importieren. Das klappt auch. Die CSV hat folgendes Format: ...

Router & Routing
OPNSense statt Endian Firewall
hannes.hutmacherFrageRouter & Routing14 Kommentare

Hallo zusammen, wir setzen hinter der pfSense, die die direkt am Internet hängt, noch eine Endian Firewall ein. Dazwischen ...

Peripheriegeräte
Suchen Outdoor Wandler von LWL auf Cat 7 Kabel
gelöst pavelruFragePeripheriegeräte13 Kommentare

Hallo Zusammen, wir suchen einen Outdoor Konverter welcher von einem kommenden LWL Kabel auf CAT 7 Lan Kabel weiter ...

Router & Routing
VPN mit zweiter Fritzbox hinter einer 7590
Eagle69FrageRouter & Routing11 Kommentare

Hallo zusammen, ich habe folgendes Problem. Auf der einen Seite steht ein Router von Bintec, dass Model BI.IP+ (vergleichbar ...

Windows 10
Amazon-Werbung im MS Edge Chromium
emeriksFrageWindows 1011 Kommentare

Hi, habe hier ein Win10 Pro. Seit ca. 2-3 Wochen habe ich gelegentlich den Effekt, dass beim Suchen im ...

Ähnliche Inhalte
Batch & Shell
Powershell: Substring
gelöst PeterGygerFrageBatch & Shell9 Kommentare

Hallo Eine Frage an die Praktiker. Ich wil aus einem String einen Teil "rauschneiden". gibt aus, dass diese Zeile ...

Batch & Shell
Powershell - Regex - Split
gelöst internet2107FrageBatch & Shell1 Kommentar

Hallo zusammen. Ich lese Variablen über eine .ini Datei ein. Innerhalb der .ini-Datei sieht es dann als Beispiel so ...

Batch & Shell
Powershell - Split-Funktion
gelöst EarthShakerFrageBatch & Shell5 Kommentare

Guten Tag, ich würde gerne folgendes Ziel erreichen. Auslesen aller Zeichen vor dem -Zeichen. Beispiel Ausgangswert Ergebnis User1firma.de > ...

Batch & Shell

Frage zu Powershell substring und indexof

gelöst mschaedler1982FrageBatch & Shell5 Kommentare

Hallo zusammen, ich bin schon lange am probieren, aber komme irgendwie nicht weiter. Ich will eine Text Datei einlesen ...

Datenbanken

MSSQL Substring

gelöst DocuSnap-DudeFrageDatenbanken6 Kommentare

Hallo, heute habe ich folgende Hearusforderung: Tabelle1 (Netzwerkbereichsdefintionen) Tabelle 2 (Geräteliste) Ziel nun in SQL: gib mir Gerätenamen und ...

Windows Tools

Powershell Dateiinhalt mit Substring Anfang und Ende ändern und wieder speichern

gelöst walker950FrageWindows Tools8 Kommentare

Guten Tag zusammen, Ich bin noch Neuling was Powershell angeht. Verusche jedoch mein bestes. Nach Stunden mit googlen und ...

Neue Fragen
Administrator Magazin
11 | 2020 Virtualisierung ist aus der IT nicht mehr wegzudenken. In der November-Ausgabe des IT-Administrator Magazins dreht sich der Schwerpunkt um das Thema "Server- und Storage-Virtualisierung". Darin erfahren Sie, wie sich die Virtualisierungstechnologie entwickelt hat, welche Varianten es im Bereich Server und Speicher gibt und wie ...
Neue Beiträge
Neue Jobangebote
Server- und Storage-VirtualisierungServer- und Storage-VirtualisierungBerechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid Cloud