h41msh1c0r
Goto Top

Powershell Werte vom Pipe Schritt zum Pipe Schritt, Werte aus 2 DBs zusammenfügen

Aloa in die Runde,

1. SQL Query an DB1
2. Pipe + Select der Spalten + Extra Spalte hinzufügen
3. Pipe + Foreach um die letzte Spalte zu befüllen mit Daten aus einer 2ten Datenbank über eine SOAP Abfrage
4. Fertig

Jetzt rufe ich im Schritt 3 eine SOAP Funktion auf die mir eine ID aus der 2ten DB zurückliefert.

Wenn ich nun nur Schritt 1 und 2 und danach ein ConvertTo-html bekomme ich die Tabelle ohne die letzte Spalte.
Nehme ich noch Schritt 3 mit dazu ist das Ergebnis nur die Rückgabe von der SOAP Abfrage.

Ist das generell so das der letzte Return in einem Schritt das Ergebnis stellt?

D.h. in dem Schritt eine neue Objektliste befüllen und sich die Ergebnisse dort von beiden Quellen (Query aus DB1) und SOAP Ergebnis zusammenfügen?

VG

Content-Key: 379655

Url: https://administrator.de/contentid/379655

Printed on: April 26, 2024 at 16:04 o'clock

Member: emeriks
emeriks Jul 09, 2018 at 12:46:39 (UTC)
Goto Top
Hi,
meinst Du nicht auch, dass ein paar Code-Snipsel sehr hilfreich wären, um nicht Deinen Kopf aufbohren zu müssen?

E.
Member: AndreasHoster
AndreasHoster Jul 09, 2018 at 12:50:43 (UTC)
Goto Top
Ohne Code ist schwer zu sagen was Du da zusammenprogrammiert hast, aber prinzipiell ist es möglich den einzelnen Objekten einer Objektliste weitere Properties zu geben (wobei das vermutlich auf den Typ der Objekte ankommt).

Ich vermute eher, das Du die Objekte in Schritt 3 ersetzt, nicht nur den Wert hinzufügst.
Kann mir meine Kristallkugel aber nicht sagen.

Jedenfalls kann ich bei meinem Versuch der SQL Abfrage (die Ergebnisse vom Typ System.Data.DataRow zurückgibt) problemlos noch eine Spalte mit Wert hinzufügen über folgenden Code:
$row = $row | Add-Member -NotePropertyName "NeueSpalte" - NotePropertyValue "NeuerWert"  
Member: H41mSh1C0R
H41mSh1C0R Jul 09, 2018 updated at 13:06:08 (UTC)
Goto Top
=) Hab das schon erwartet.

Mal grob zusammengekürzt, da ich hier von der einen Maschine kein C&P auf die Maschine mit Internet machen kann.

$Result wird durch das erste Select aus der ersten DB befüllt.

$result | select "Spalte1", "Spalte2", @{l="ID";e={}} | % {   
     $DB2 = get-PackageID -Filter $Filter 
     write-host $($_)."Spalte1"  
     write-host $($_),"Spalte2"  
     write-host $($DB2.ObjectList).ID
}  | convertTo-html <Pfad>

Frage 1: Vom Pipe Schritt zum Pipe Schritt werden die Ergebnisse nicht beibehalten sondern das was als letztes in die Ausgabe schreibt ist das Ergebnis?

Frage 2:
Wenn ich im ConvertTo-html nun Spalte 1, Spalte 2 und die ID haben will --> neues Object bauen und das dann weiterpipen?
In den Write-host(test ausgaben) ist das drin was drin sein soll.

=)

VG
Member: NetzwerkDude
NetzwerkDude Jul 09, 2018 updated at 13:18:25 (UTC)
Goto Top
Write-Host's verhalten in Streams (=Pipes) unterscheidet sich in v1-4 und v. 5 , mehr dazu hier:
https://blogs.technet.microsoft.com/heyscriptingguy/2015/07/04/weekend-s ...

Mit welcher Version arbeitest du?

Edit: Ich nehme an du kannst das Problem schnell lösen wenn du statt write-host, write-output nimmst
Member: emeriks
emeriks Jul 09, 2018 at 13:19:31 (UTC)
Goto Top
Zeile 4
Kommafehler
Fehler durch Abschreiben?
Member: colinardo
Solution colinardo Jul 09, 2018 updated at 13:29:55 (UTC)
Goto Top
Servus.
write-host und write-output sind zwei verschiedene Paar Schuhe, außerdem verlierst du hier auch die Eigenschaften selbst und konvertierst das in ein dummes großes Array aus Werten, also mach's doch direkt so, wenn du hier schon eine calculated property benutzt:
$result | select "Spalte1", "Spalte2", @{l="ID";e={Get-PackageID -Filter $Filter | select -Index 0 | %{$_.ObjectList.ID}}} | convertTo-html <Pfad>  
Grüße Uwe
Member: H41mSh1C0R
H41mSh1C0R Jul 09, 2018 at 15:56:03 (UTC)
Goto Top
Hallo Uwe,

dankööö.

VG