Bonjour,
J'ai un problème sur mon script PowerShell que je ne comprend pas,
j'ai une page "cas2.ps1" qui est un peut le programme principal qui gère un cas d'exception n°2, dans cette page en haut j'ai écris :
"formatNomPrenom.ps1" est une page de fonction dont une qui est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Import-Module .\formatNomPrenom.ps1
J'exécute cette fonction avec le code suivant dans le fichier "cas2.ps1" :
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 function formatNom([string]$val){ # Formatage du nom ou du prénom au format AD # Ajout au fichier paramètres # Importation des modules Import-Module .\creationLog.ps1 # Création de l'objet Excel $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $excel.DisplayAlerts = $false # Ouverture du fichier paramètres Write-Host "Ouverture du fichier parametres" -ForegroundColor Blue try{ $workbook = $excel.Workbooks.Open("C:\Users\ltanne\Desktop\preprod\parametres\feuille.xlsx") $worksheet = $workbook.Worksheets.item("Parametres") $worksheet.Activate() $ouvertParam = $true $chaine = "Ouverture du fichier paramètres : OK" majLog $chaine }catch{ $ouvertPram = $false Write-Host "Le fichier ne s'ouvre pas, veuillez vérifier le nom : " -ForegroundColor Red Write-Host "qu'il se trouve bien dans le bon dossier 'parametres'," -ForegroundColor Red Write-Host "qu'il n'a pas été déplacer ou supprimer" -ForegroundColor Red $chaine = "Impossible d'ouvrir le fichier parametres : fichier formatNomPrenom.ps1" majLog $chaine } # Nombre total de ligne dans le fichier $ligneTotal = $worksheet.UsedRange.Rows.count # Modification de la chaine $colonne = 39 $ligne = 2 # Écrit la chaine dans le fichier paramètre Write-Host "MAJ PARAMETTRE EN COUR..." for($ligne = 2; $ligne -le $ligneTotal; $ligne++){ if($worksheet.Cells.Item($ligne, $colonne).Value() -eq " "){ Write-Host $worksheet.Cells.Item($ligne, $colonne).Value() $worksheet.Cells.Item($ligne, $colonne) = $nom $newLigne = $ligne } } # Recherche par carractère, ceux à remplacé Write-Host "RECHERCHE EN COUR..." $longueur = $nom.Length $colonne = 45 for($nb = 0; $nb -le $longueur; $nb++){ if($chaine[$nb] -eq "'"){ $nom = $nom -replace $nom[$nb], " " } # Parcour des carractères spéciaux for($ligne = 2; $ligne -le $ligneTotal; $ligne++){ if($worksheet.Cells.Item($ligne, $colonne).Value() -eq $nom[$nb]){ $nom = $nom -replace $nom[$nb], $worksheet.Cells.Item($ligne, ($colonne + 1)).Value() break } } } $nom = $nom.ToUpper() Write-Host "Fermeture du fichier paramètre" -ForegroundColor Red $workbook.Save() $workbook.Close() $excel.Quit() return $nom }
Quand la fonction est exécuté une première fois ca fonctionne sans problème mais quand elle est exécuté une deuxième fois elle affiche l'erreur suivante :
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 # Attributon du nom $nom = $Salarie.nomRh # Ligne et colonne de départ dans le fichier paramètres Write-Host "Formatage du nom" -ForegroundColor Red $ligne = 2 $colonne = 39 $trouve = $false for($ligne = 2; $ligne -le $ligneTotal; $ligne++){ if($worksheet.Cells.Item($ligne, $colonne).Value() -eq $nom){ $newNom = $worksheet.Cells.Item($ligne, $colonne).Value() $trouve = $true } } if($trouve.Equals($false)){ # Ajout d'un nouveau nom et formatage du nom manuelement $newNom = formatNom $nom } $NewSalarie.nom = $newNom
Avez-vous une idée ?
Merci d'avance
Partager