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-ID: 379655

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

Ausgedruckt am: 24.11.2024 um 18:11 Uhr

emeriks
emeriks 09.07.2018 um 14:46:39 Uhr
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.
AndreasHoster
AndreasHoster 09.07.2018 um 14:50:43 Uhr
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"  
H41mSh1C0R
H41mSh1C0R 09.07.2018 aktualisiert um 15:06:08 Uhr
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
NetzwerkDude
NetzwerkDude 09.07.2018 aktualisiert um 15:18:25 Uhr
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
emeriks
emeriks 09.07.2018 um 15:19:31 Uhr
Goto Top
Zeile 4
Kommafehler
Fehler durch Abschreiben?
colinardo
Lösung colinardo 09.07.2018 aktualisiert um 15:29:55 Uhr
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
H41mSh1C0R
H41mSh1C0R 09.07.2018 um 17:56:03 Uhr
Goto Top
Hallo Uwe,

dankööö.

VG