Résolu Utiliser une liste de valeurs dans un Foreach

Plus d'informations
il y a 3 ans 4 mois - il y a 3 ans 4 mois #30137 par Jonathan CHANAL
Merci Arnaud,

Ben du coup, je ne comprends rien, le pas à pas à l'air de parfaitement fonctionner (excepté une ligne vide à chaque fois que j'appuie sur Entrée, je ne sais pas si c'est normal...)


Je n'arrive pas à mettre l'image en grand :(
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.

Plus d'informations
il y a 3 ans 4 mois #30138 par Jonathan CHANAL
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 :
#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.

Plus d'informations
il y a 3 ans 4 mois #30145 par Jonathan CHANAL
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,

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 4 mois #30149 par Arnaud Petitjean
Super !!

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
Propulsé par Kunena