Die Datatable wird als DataTable (System.ComponentModel.MarshalByValueComponent) Objekt in Powershell geladen.
PS D:\OneDrive\10 Programmieren\Powershell\Ad User aus SeMI> $OpenTable.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True DataTable System.ComponentModel.MarshalByValueComponent
Ich kann sie jedoch mit Select-Object in ein Array umwandeln. Dazu muss ich nur die gewünschten Spalten aussuchen.
$OpenTable = $OpenTable | Select-Object FirstName, LastName, Firma, Mitarbeiter, ...
Jetzt wird es als System.Array angegeben.
PS D:\OneDrive\10 Programmieren\Powershell\Ad User aus SeMI> $OpenTable.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
Für den Zugriff auf die SQL Daten benutze ich folgende Funktion:
# Function for the SQL query
function Perform-SQL {
Param(
[string]$sqlHost,
[string]$DB,
[string]$SqlQuery,
[string]$User,
[string]$Password
)
if (($User) -and ($Password)) {
$connectionParam = "Data Source=$sqlHost;User ID=$User;Password=$Password;Initial Catalog=$DB"
} else {
$connectionParam = "Data Source=$sqlHost;Integrated Security=SSPI;Initial Catalog=$DB"
}
$sqlconnection = new-object system.data.SqlClient.SQLConnection($connectionParam)
$command = new-object system.data.sqlclient.sqlcommand($sqlQuery,$sqlconnection)
$sqlconnection.Open()
$sqlDataAdapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$sqlDataAdapter.Fill($dataSet) | Out-Null
$sqlconnection.Close()
$dataSet.Tables
}
Diese erstellt ein DataTable (System.ComponentModel.MarshalByValueComponent) Objekt. Eventuell sollte ich hier die Funktion ändern.