Question Script avec Access en sortie

Plus d'informations
il y a 16 ans 4 mois #5610 par edouard
Bonjour à tous !

j'aurai besoin d'un coup de pouce,

j'ai donc un script qui me fait un inventaire
(inspiré par un des script de la bibliothèque:whistle:) ,

il faudrait que le résultat du dit script écrive directement dans une base access.

voici une version simplifié du script inventaire (pour ne pas trop chargé la page)

[code:1]


function Get-ComputerInfo {
param ($computer = \".\"«»)

# Création de la Variable résultat
# (Ajoutez ici d'autres propriétés)

$result = \"\" | Select-Object Nom,Model,Serial

# Commandes de la variable résultats:

$result.Nom = (Get-WmiObject win32_computersystem -computerName $computer).name
$result.Serial = (Get-WmiObject win32_bios -computerName $computer).SerialNumber
$result.Model = (Get-WmiObject win32_computersystem -computerName $computer).model

# return the result:
$result
}


get-content parc.txt |
foreach {Get-ComputerInfo $_}

[/code:1]

J'ai donc le scipt de connexion a une base access,
(qui fonctionne j'arrive bien a récuperer le contenu avec powershell )


[code:1]

# Pour une base Access nul besoin d'avoir Access d'installer sur le poste
# La couche d'accés ADO.NET est installé par défaut via le runtime de .NET

$FileName=\"C:\Script\Vxp1invent.mdb\"
$NomTable=\"Inventaire\"

$StrConnexion=\"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$FileName\"
$Connexion = new-object System.Data.OleDb.OleDBConnection($StrConnexion)

# On Doit impérativement récupèrer toutes les colonnes de toutes les lignes sinon
# on obtient soit une erreur soit on ne récupére aucune donnée
$Requete = \"Select * From Inventaire\"
$cmd = New-object System.Data.OleDb.OleDbCommand($Requete,$Connexion)

$DataAdapter = new-object System.Data.OleDB.OleDBDataAdapter($cmd)
$DataSet = new-object System.Data.DataSet
[void]$DataAdapter.Fill($DataSet)
$Connexion.Close()

[/code:1]


est il envisageable de faire une requete qui prenne ma variable $result et remplisse ma table inventaire

Merci infiniment à ceux qui pourront m'aidé :p

Message édité par: eddy, à: 12/11/09 14:34<br><br>Message édité par: eddy, à: 12/11/09 14:36

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

Plus d'informations
il y a 16 ans 4 mois #5612 par Laurent Dardenne
Salut,
eddy écrit:

est il envisageable de faire une requete qui prenne ma variable $result et remplisse ma table inventaire

Oui, mais en construisant une requête Insert à partir des membres de l'objets $result.
Il n'est pas possible sans cmdlet/code additionnel de faire un :
[code:1]Insert $Result INTO Inventaire[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5614 par edouard
Réponse de edouard sur le sujet Re:Script avec Access en sortie

Oui, mais en construisant une requête Insert à partir des membres de l'objets $result.


Tu veut dire qu'il faut que je fasse un Insert pour chaque
$result.Nom
$result.serial

etc

??

(beh oui je débute vraiment ! Mais promis j'me soigne)<br><br>Message édité par: eddy, à: 12/11/09 16:40

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

Plus d'informations
il y a 16 ans 4 mois #5615 par Laurent Dardenne
eddy écrit:

Tu veut dire qu'il faut que je fasse un Insert pour chaque $result.Nom $resul.serial etc

Oui tout à fait. Comme tout traitement SQL.
Ensuite cela dépend de tes régles de gestion soit tu inséres au fur et à mesure de la collecte soit une fois toutes les infos collectées et ce au sein d'une transaction.
eddy écrit:

beh oui je débute vraiment ! Mais promis j'me soigne

Etre débutant n'est pas une maladie, il faut bien commencer par le commencement :P

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5622 par edouard
Réponse de edouard sur le sujet Re:Script avec Access en sortie
Bon j'ai bossé sur la requête;

bon j'ai récupe le trial de \&quot;AdminScripEditor\&quot; qui à une interface graphique plutot sympa pour faire du script et qui m'a notament pondue une requete toute faite avec la connexion qui devrait allé bien;

le seul probleme c'est que l'insert marche pas ....


est ce que ma variable $result est accessible en dehors de la fonction ?

ou alors est ce la requete/ connexion BDD qui marche pas ??

Bon si ça vous arrache les yeux je peu réduire la taille du script pour que ça remplisse un peu moins la page


[code:1]



function Get-ComputerInfo
{
param($computer = \&quot;.\&quot;)

# Création de la Variable résultat
# (Ajoutez ici d'autres propriétés)

$result = \&quot;\&quot; | Select-Object Nom, Serial, Utilisateur

# Commandes de la variable résultats:

$result.Nom = (Get-WmiObject win32_computersystem -computerName $computer).name
$result.Utilisateur = (gwmi win32_computerSystem -computerName $computer).username
$result.Serial = (Get-WmiObject win32_bios -computerName $computer).SerialNumber



# return the result:
$result
}

Get-computerinfo


$cnstring = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Script\Vxp1invent.mdb;Mode=ReadWrite'
$cmdtext = \&quot;INSERT INTO Inventaire (serial,Nom, Utilisateur )
VALUES('\&quot; + $result.Nom + \&quot;',
'\&quot; + $result.Serial + \&quot;',
'\&quot; + $result.Utilisateur + \&quot;') \&quot;

$cn = New-Object System.Data.OleDb.OleDbConnection $cnstring
$cn.Open()

$cmd = New-Object System.Data.OleDb.OleDbCommand $cmdtext, $cn
$cmd.ExecuteNonQuery()
$cn.Close()


[/code:1]<br><br>Message édité par: eddy, à: 13/11/09 13:48

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

Plus d'informations
il y a 16 ans 4 mois #5625 par Laurent Dardenne
Salut,
eddy écrit:

est ce que ma variable $result est accessible en dehors de la fonction ?

Non mais tu l'émets dans le pipeline, tu dois donc la récupérer dans une variable ou une instruction utilisant le pipe
eddy écrit:

ou alors est ce la requete/ connexion BDD qui marche pas ??

Sa construction me semble correct mais sans accès à $result son contenu sera tjr faux.
[code:1]
function Get-ComputerInfo
{
param($computer = \&quot;.\&quot;«»)

$result = \&quot;\&quot; | Select-Object Nom, Serial, Utilisateur

# Commandes de la variable résultats:
$Info=Get-WmiObject Win32_ComputerSystem -computerName $computer -property Name,Username
$result.Nom = $Info.Name
$result.Utilisateur = $Info.Username
$result.Serial = (Get-WmiObject win32_bios -computerName $computer -property SerialNumber).SerialNumber

# return the result:
$result
}
$Result = Get-ComputerInfo
$cmdtext = \&quot;INSERT INTO Inventaire (Nom, Serial, Utilisateur ) VALUES ('{0}', '{1}', '{2}')\&quot; -F $result.Nom, $result.Serial, $result.Utilisateur

$DataSource=\&quot;C:\Script\Vxp1invent.mdb\&quot;
$cnstring = \&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$DataSource;Mode=ReadWrite\&quot;
...
[/code:1]
Tu devrais paramètrer ta chaîne de connexion, et pour WMI préciser les propriétés que tu comptes utiliser, cela soulagera le réseau.

Tutoriels PowerShell

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

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