Question [RESOLU] Conversion table sql en psobject

Plus d'informations
il y a 13 ans 10 mois #6945 par Selenae
Bonjour,

Je dois exécuter plusieurs fois des requests SQL pour des checks et j'aimerais exploiter les resultats en psobject pour plus de facilité.

Voici le script que j'utilise pour me connecter a la DB =>
[code:1]

function sql_to_hash ([string]$query){
$Database = \"*********\"
$Server = \"******\"
$pwd = \"*****\"
$Username = \"**********\"

# Connect to SQL and query data, extract data to SQL Adapter
$SqlQuery = $query
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = \"Data Source=$Server;Initial Catalog=$Database;Trusted_Connection=False;User Id=$Username;Password=$pwd\"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$nRecs = $SqlAdapter.Fill($DataSet)
$nRecs | Out-Null

#Populate Hash Table
$objTable = $DataSet.Tables[0]
$objTable
}
[/code:1]
Ensuite j'aimerais convertir le retour de ma fonction ( $objTable ) en objet pwshell

[code:1]
$object = New-Object psobject -Property $objTable
[/code:1]

Seulement j'ai ce message
[code:1]New-Object : Cannot bind parameter 'Property'. Cannot convert the \"Table\" value of type \"System.Data.DataTable\" to type \"System.Collections.Hashtable\".
At line:1 char:40
+ $object = New-Object psobject -Property <<<< $objTable
+ CategoryInfo : InvalidArgument: (:«») [New-Object], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.NewObjectCommand[code/][/code:1]

Pourriez vous me dire si il existe une méthode pour convertir un objet \"System.Data.DataTable\" en \"System.Collections.Hashtable\" ?

Merci d'avance de votre aide

Message édité par: Selenae, à: 25/05/10 15:29

Message édité par: Selenae, à: 25/05/10 15:30<br><br>Message édité par: Selenae, à: 27/05/10 07:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #6948 par Arthur
Réponse de Arthur sur le sujet Re:Conversion table sql en psobject
J'ai pas trop saisi le résultat de ta fonction mais as tu essayé ca?

[code:1]$object = New-Object psobject
$object = $objTable
[/code:1]

Enfin cela dépend du résultat que tu as...si c'est juste une table par exemple le code ci dessus devrait suffire amplement.

EDIT : sinon regarde ici :
blogs.msdn.com/b/powershell/archive/2009...perty-hashtable.aspx

Message édité par: bilbao, à: 25/05/10 15:50

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #6950 par Selenae
Réponse de Selenae sur le sujet Re:Conversion table sql en psobject
Salut Bilbao,

Tes deux lignes de code ont bien reglé mon probleme

Je pensait que la commande New-Object psobject devait obligatoirement prendre sa table de hash via la propriété -Property.

Merci :)



bilbao écrit:

J'ai pas trop saisi le résultat de ta fonction mais as tu essayé ca?

[code:1]$object = New-Object psobject
$object = $objTable
[/code:1]

Enfin cela dépend du résultat que tu as...si c'est juste une table par exemple le code ci dessus devrait suffire amplement.

EDIT : sinon regarde ici :
blogs.msdn.com/b/powershell/archive/2009...gt;<br>Message édité par: bilbao, à: 25/05/10 15:50

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #6951 par Arthur
Réponse de Arthur sur le sujet Re:Conversion table sql en psobject
Si j'ai bien pigé le paramètre \&quot;-property\&quot; permet d'initialiser les propriétés de l'objet.
(Enfin je dit ca de tête vite fait, j'ai à peine regardé le man :P )

cf: \&quot;man New-object -full\&quot;.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #6952 par Laurent Dardenne
Selenae écrit:

Je pensait que la commande New-Object psobject devait obligatoirement prendre sa table de hash via la propriété -Property.

C'est plutôt, le paramètre -Property de la commande New-Object qui attend une hashtable pour initialiser les propriétés de l'objet créé.
Si tu veux créer une hashtable à partir d'un objet tu peux faire ceci:
[code:1]
function ConvertTo-Dictionary ([ScriptBlock]$KeyExpression,[ScriptBlock]$ValueExpression={$_}) {
#http://einsteintech.spaces.live.com/blog/cns!89E05724AF67A39E!228.entry
#
#Example :
#$Services = Get-Service | ConvertTo-Dictionary {$_.Name} {$_.DisplayName}
#$Services

begin { $Result = @{} }
process { $Result[(&amp;$KeyExpression)]=(&amp;$ValueExpression) }
end { $Result }
}
$F=dir
$H=$F[0] |GM -MemberType *Property -Name *| ConvertTo-Dictionary {$_.Name} {$F[0].\&quot;$($_.Name)\&quot;}
[/code:1]
Tu peux trouver d'autres solutions sur le net.

Pour récupérer uniquement les propriétés d'un objet dans un autre objet :
[code:1]$o=$F[0]|Select *
$o.Gettype()
$O|gm[/code:1]
Toutes les propriétés du nouvel objet sont désormais du type NoteProperty.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 13 ans 10 mois #6974 par Selenae
Réponse de Selenae sur le sujet Re:Conversion table sql en psobject
Merci pour vos réponses sujet résolu :)

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.077 secondes
Propulsé par Kunena