Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

ReadSQLdb.ps1

Publié le par damcuvelier

<#
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*
}
 

Commenter cet article