Résolu
Utiliser une liste de valeurs dans un Foreach
- Jonathan CHANAL
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 4 mois - il y a 3 ans 4 mois #30137
par Jonathan CHANAL
Réponse de Jonathan CHANAL sur le sujet Utiliser une liste de valeurs dans un Foreach
Pièces jointes :
Dernière édition: il y a 3 ans 4 mois par Jonathan CHANAL.
Connexion ou Créer un compte pour participer à la conversation.
- Jonathan CHANAL
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 4 mois #30138
par Jonathan CHANAL
Réponse de Jonathan CHANAL sur le sujet Utiliser une liste de valeurs dans un Foreach
Bon, je n'ai pas réussi malgré ma journée d'efforts mais j'ai poursuivi l'amélioration du fichier tout de même :
Si quelqu'un voit pour ça ne marche pas, je suis preneur ! Je viendrais poster la réponse si toutefois je la trouve par ailleurs.
Merci d'avance et bon week-end.
#region Ouvrir le fichier Excel de configuration
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$FilePathExcel = "$PSScriptRoot\0_Config_PowerBI.xlsx"
$Workbook = $Excel.Workbooks.Open($FilePathExcel)
$Worksheet = $Workbook.Worksheets.Item(1)
$State = $Worksheet.Cells.Item(1, 5).value2
$Ready2Go = "Configuration terminée"
$sourceWorkspaceName = $Worksheet.Cells.Item(10, 2).value2
$NewWorkspaceName = $Worksheet.Cells.Item(4, 2).value2
#endregion Ouvrir Fichier Excel
#region Ctrl Fichier Excel
if ($State -ne $Ready2Go) {
write-host "Commencez d'abord par compléter le fichier Excel de configuration."
}
#endregion Ctrl Fichier Excel
#region Télécharger et renommer les modèles
else {
Write-Host
Connect-PowerBIServiceAccount | Out-Null
if ( $sourceWorkspaceName -like "Meteor*" ) {
# Récupération de la liste des rapports à télécharger Météor
$TableauData = Import-Excel -Path $FilePathExcel -StartRow "29" -StartColumn "1" -EndRow "39" -EndColumn "4" -HeaderName "Rapports à installer Météor", "Nom des rapports", "A_Installer", "Nom des rapports Client"
}
else {
# Récupération de la liste des rapports à télécharger Mercure
$TableauData = Import-Excel -Path $FilePathExcel -StartRow "14" -StartColumn "1" -EndRow "25" -EndColumn "4" -HeaderName "Rapports à installer Mercure", "Nom des rapports", "A_Installer", "Nom des rapports Client"
}
$RapportsTypes = $TableauData | Where-Object A_Installer -CContains "Oui"
$reportName = $RapportsTypes."Nom des rapports"
$sourceWorkspace = Get-PowerBIWorkspace -Name $sourceWorkspaceName
Write-Host "Votre import va comporter" $RapportsTypes.Count "rapport(s) provenant de l'espace de travail" $sourceWorkspaceName
foreach ($element in $reportName) {
$report = Get-PowerBIReport -WorkspaceId $sourceWorkspace.Id -Name $element #"PBI_MET_0001 - Chiffre d'affaires par mois" en remplaçant $element par le nom d'un fichier, la boucle commence... mais c'est alors le même fichier qui est téléchargé...
Write-Host "Exportation du rapport $element depuis l'espace modèle vers votre dossier Rapports A installer.."
New-Item -ItemType Directory -Force -Path "$PSScriptRoot/Rapports à Installer" | Out-Null
$reportTempFilePath = "$PSScriptRoot/Rapports à Installer/$element.pbix"
Export-PowerBIReport -WorkspaceId $sourceWorkspace.Id -Id $report.Id -OutFile $reportTempFilePath
}
#region Renommer les fichiers téléchargés
$source_path = "$PSScriptRoot\Rapports à Installer"
$filter = "*.pbix"
$new_prefix = "$NewWorkspaceName - "
$files = Get-ChildItem -Path $source_path -Filter $filter
ForEach ($file in $files) {
$old_file_name = $file.Name
$new_full_name = "$($file.DirectoryName)" + "\" + "$($new_prefix)" + "$($old_file_name)"
Rename-Item $file.FullName -NewName $new_full_name
}
#endregion Renommer
#region Message final pour l'utilisateur
if ($reportName.Count -gt 1) {
write-host "Vos rapports ont bien été téléchargés et renommés, vous pouvez les modifier et poursuivre la procédure"
}
else {
write-host "Votre rapport a bien été téléchargé et renommé, vous pouvez le modifier et poursuivre la procédure"
}
#endregion Fin message final
}
#endregion Télécharger et renommer les modèles
#region Fermer Excel proprement
Start-Sleep 5
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel)
Remove-Variable Excel
#endregion Fermer Excel
Si quelqu'un voit pour ça ne marche pas, je suis preneur ! Je viendrais poster la réponse si toutefois je la trouve par ailleurs.
Merci d'avance et bon week-end.
Connexion ou Créer un compte pour participer à la conversation.
- Jonathan CHANAL
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 4 mois #30145
par Jonathan CHANAL
Réponse de Jonathan CHANAL sur le sujet Utiliser une liste de valeurs dans un Foreach
Bonjour,
J'ai fini par trouver... le script était bon, c'est le fichier Excel qui ne l'était pas j'avais dû copier des valeurs depuis internet et je pense que cela avait conservé certains caractères masqués ou des espaces... J'ai réécrit mes valeurs et tout fonctionne correctement.
Merci pour ton aide Arnaud et à bientôt,
J'ai fini par trouver... le script était bon, c'est le fichier Excel qui ne l'était pas j'avais dû copier des valeurs depuis internet et je pense que cela avait conservé certains caractères masqués ou des espaces... J'ai réécrit mes valeurs et tout fonctionne correctement.
Merci pour ton aide Arnaud et à bientôt,
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 3 ans 4 mois #30149
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Utiliser une liste de valeurs dans un Foreach
Super !!
Merci d'être venu poster ta réponse
Merci d'être venu poster ta réponse
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.368 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Utiliser une liste de valeurs dans un Foreach