Bonjour,
Je galère depuis plusieurs heures pour réaliser un simple test pour vérifier la présence d'une valeur. Je n'ai pas pour objectif d'apprendre Powershell, ce n'est qu'un besoin ponctuel, mais là, sur ce point, je patine.
Je récupère d'abord sur une base de données SQL Server une liste de valeur (une seule colonne) que je mets dans une variable $trigramme_list
Ensuite, je demande la saisie d'un trigramme dans un prompt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Function Sql_Query([string] $sqServer, [string] $sqBase, [string] $sqQuery) { $Connection = New-Object System.Data.SqlClient.SqlConnection $Connection.ConnectionString = "Server = $sqServer; Database = $sqBase; Integrated Security = True" $sqlCmd = New-Object System.Data.SqlClient.SqlCommand $sqlCmd.CommandTimeout = 30 $sqlCmd.CommandText = $sqQuery $sqlCmd.Connection = $Connection $DataSet = New-Object System.Data.DataSet $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter $Adapter.SelectCommand = $sqlCmd $Adapter.Fill($DataSet) $Connection.Close() return $DataSet.Tables[0] } $SQLSERVER = "----" $SQLBASE = "master" $sqlQuery = "select SUBSTRING(name,13,LEN(name)-12) as trigramme from sys.databases where name like '-----_%'" $trigramme_list = Sql_Query $SQLSERVER $SQLBASE $sqlQuery
Viens la galère. Je veux vérifier la présence du trigramme saisie dans la base de données, afin de savoir si je redemande à l'utilisateur de saisir un autre trigramme, inexistant en base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Function demande_trigramme() { $trigramme = Read-Host 'Quel est le trigramme à utiliser ?' If ($trigramme.length -ne 3) {demande_trigramme} $trigramme } [String]$trigramme = demande_trigramme
J'ai essayé avec une boucle for :
Mais la comparaison ne s'effectue pas, je suppose qu'il y a un problème de type de données ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 For($numligne=1; $numligne -lt $trigramme_list.length ; $numligne++) {$trigramme_list[$numligne] -eq $trigramme }
J'ai aussi essayé avant avec une boucle foreach mais là aussi, cela ne fonctionnait pas, un problème d'index ...
Ce test est bien sûr à intégrer à la fonction demande_trigramme dans un else, mais pour développer je commence par faire des tests à l'extérieur de la fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [int]$test_trigramme = 0 foreach ($ligne in $trigramme_list) { If ($ligne -eq $trigramme) {$test_trigramme ++} } If ($test_trigramme -ne 0) {demande_trigramme}
Je suis persuadé que c'est du basique pour beaucoup d'entre vous, mais pas pour moi. Je suis à la limite d'envoyer Powershell sur les roses, et revenir vers du python.
Merci pour votre aide
Partager