Wie Datenfeld aus SQL bei With-Anweisung in Powershell ansprechen
Hallo zusammen,
wie kann ich die Werte einer SQL - Abfrage in Powershell abrufen? Mit normeln Selectanweisungen können wir die Alias oder direkt den Tabellennamen nehmen. Bei einer With-Select-Anweisung bekomme ich keine Werte.
Hier mal ein Auszug meines Skriptes:
Danke vorab für eure Hilfe!
Beste Grüße
D.
wie kann ich die Werte einer SQL - Abfrage in Powershell abrufen? Mit normeln Selectanweisungen können wir die Alias oder direkt den Tabellennamen nehmen. Bei einer With-Select-Anweisung bekomme ich keine Werte.
Hier mal ein Auszug meines Skriptes:
# SQL Funktion zum zusammenstellen der Prüftabelle
function querySQL {
Param(
[string]$cSQL
)
# Connectionstring aus config
$connectionString = "Data Source=x; Initial Catalog=x; user id=x; pwd=x"
# SQL Verbindung aufbauen
$connection = New-Object system.data.SqlClient.SQLConnection($connectionString)
$command = New-Object system.data.sqlclient.sqlcommand($cSQL,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
# Tabelle erstellen
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$dataSet.Tables
}
$Abfrage=
"
with Ausgabe (Sub, MC) as
(
select (Tour
+'_XML_'
+format(Datum_Auftrag,'yyyyMMdd')
+'_'
+convert(varchar,(ROW_NUMBER() over (partition by tour order by tour)))
)
,MC
from S_Basis
where K_List=3
and TA='ADEG-VH'
and format(Datum_Au,'dd.MM.yyyy')='"+(Get-Date).AddDays(-1).ToString("dd.MM.yyyy")+"'
)
select Ausgabe.Sub from Ausgabe
where Ausgabe.MC='2002852'
"
[array]$QSub = (querySQL -cSQL $Abfrage).Sub # <-- Nicht ansprechbar
[array]$QMC = (querySQL -cSQL $Abfrage).MC # <-- Nicht ansprechbar
Danke vorab für eure Hilfe!
Beste Grüße
D.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 596238
Url: https://administrator.de/contentid/596238
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
3 Kommentare
Neuester Kommentar
Erstens gibst du ja erst mal in deiner Funktion ein Array aus Tabellen zurück ($dataSet.Tables).
(Deine SQL Abfrage habe ich jetzt nicht auf Korrektheit geprüft, die muss natürlich überhaupt erst mal laufen bevor du weiter machst)
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
https://4sysops.com/archives/the-powershell-here-string-preserve-text-fo ...
(Deine SQL Abfrage habe ich jetzt nicht auf Korrektheit geprüft, die muss natürlich überhaupt erst mal laufen bevor du weiter machst)
# SQL Funktion zum zusammenstellen der Prüftabelle
function querySQL {
Param(
[string]$cSQL
)
# Connectionstring aus config
$connectionString = "Data Source=x; Initial Catalog=x; user id=x; pwd=x"
# SQL Verbindung aufbauen
$connection = New-Object system.data.SqlClient.SQLConnection($connectionString)
$command = New-Object system.data.sqlclient.sqlcommand($cSQL,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dt = New-Object System.Data.DataTable
# Tabelle erstellen
$adapter.Fill($dt) | Out-Null
$connection.Close()
return $dt
}
$Abfrage= @"
with Ausgabe (Sub, MC) as
(
select (Tour
+'_XML_'
+format(Datum_Auftrag,'yyyyMMdd')
+'_'
+convert(varchar,(ROW_NUMBER() over (partition by tour order by tour)))
)
,MC
from S_Basis
where K_List=3
and TA='ADEG-VH'
and format(Datum_Au,'dd.MM.yyyy')='$((Get-Date).AddDays(-1).ToString("dd.MM.yyyy"))'
)
select * from Ausgabe
where Ausgabe.MC='2002852'
"@
(querySQL -cSQL $Abfrage).Sub
Ich finde auch im Internet keine geeignete Literatur.
Hast du wohl die Grundlagen der Powershell übersprungen https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
https://4sysops.com/archives/the-powershell-here-string-preserve-text-fo ...