ReadSQLdb.ps1
<#
utilité: crée une variable globale et renvoi la liste des variables ou renvoie un array pour chaque data correspondante
usage:
ReadSQLdb.ps1 -find "<columnName>=<columnValue>" -Srv "NomDuServeurSQL" -db "NomDeLaBaseDeDonnees" -TN "NomDeLaTable"
[option:] -usr "username" -pwd "password"
#>
param($Srv,$usr,$pwd,$db,$TN,$Find,[switch]$arr)
$Global:erroractionpreference = 'silentlycontinue'
$Global:warningactionpreference = 'silentlycontinue'
$ici = $PSScriptRoot; if(!$ici){$ici = (Get-Location).path}
$Global:here = $ici
[string]$refName = $Find.split('=')[0] # $refName = "NomDeLaColonne" # Colonne à filtrer
[string]$refValue = $Find.split('=')[1] # $refValue = "$RefValue" # Valeur à rechercher dans la colonne
function InstImpMod($moduleName){
$tstconnex = Test-Connection -ComputerName www.powershellgallery.com
$result = $false
if(Get-Module $moduleName){$result = $moduleName}
if(!$result){
try {
if($tstconnex){
Install-Module -Name $moduleName -Force -SkipPublisherCheck -erroraction Stop | out-null
Import-Module SqlServer
} else {error}
} catch {
try {Import-Module "$here\$moduleName\$moduleName.psd1" -Force | out-null}
catch {$result = $false}
}
if(Get-Module $moduleName){$result = $moduleName}
}
return $result
}
# Installer & Importer le module SqlServer s'il n'est pas déjà installé
InstImpMod('SqlServer')
# Paramètres de connexion à la base de données
if(!$Srv){$Srv = "NomDuServeurSQL"}
if(!$db){$db = "NomDeLaBaseDeDonnees"}
if(!$TN){$TN = "NomDeLaTable"}
if($usr -and $pwd){$connectionString = "Server=$Srv;uid=$usr;pwd=$pwd;Database=$db;Integrated Security=True;"}
else{$connectionString = "Server=$Srv;Database=$db;Integrated Security=True;"}
# Établir la connexion à la base de données
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
# Créer une commande SQL pour récupérer les données de la table
$sqlQuery = "SELECT * FROM $TN WHERE $refName = '$refValue'"
$command = $connection.CreateCommand()
$command.CommandText = $sqlQuery
# Exécuter la commande et récupérer les résultats dans un array
$results = @()
$reader = $command.ExecuteReader()
while ($reader.Read()) {
$row = @{}
for ($i=0; $i -lt $reader.FieldCount; $i++) {
$row[$reader.GetName($i)] = $reader[$i]
}
$results += $row
}
# Fermer la connexion à la base de données
$connection.Close()
if($arr){return $results}
else{
# Créer une variable globale pour chaque entrée dans le tableau
# foreach ($result in $results) {
# foreach ($key in $result.Keys) {
# $global:($key) = $result[$key]
# }
# }
foreach ($result in $results) {
foreach ($key in $result.Keys) {
$globvarName = "$TN$key"
$global:($globvarName) = $result[$key]
}
}
# Afficher les variables globales créées
Get-Variable -Name $TN*
}
/image%2F0881799%2F20140610%2Fob_a8c7fe_logo2.jpg)
Commenter cet article