Fermer

décembre 5, 2023

Contourner le problème d’importation de fichiers PowerShell / Blogs / Perficient

Contourner le problème d’importation de fichiers PowerShell / Blogs / Perficient


PowerShell s’avère très utile pour automatiser les processus et gérer divers aspects de Sitecore. Cependant, nous avons rencontré des difficultés lorsque nous avons rencontré des problèmes lors de l’importation de fichiers à l’aide de PowerShell Script. Dans cet article, nous aborderons le problème d’importation de fichiers que nous avons rencontré lors d’une tâche dans l’un de nos projets.

Nous avons rencontré un scénario dans lequel nous devions importer des données d’un fichier « Excel » ou « CSV » dans « Sitecore ». Nous avons développé un script PowerShell pour lire le fichier « Excel » ou « CSV » et importer son contenu dans l’arborescence de contenu de Sitecore. Le script a fonctionné correctement sur l’instance de projet locale. Cependant, lorsque nous avons déployé les mêmes modifications dans un environnement supérieur, celui-ci n’a pas fonctionné correctement et a généré l’erreur mentionnée ci-dessous.

Erreur de fichier d’importation : utilisation du script PowerShell

Calling Spe.Client.Applications.UploadFile.PowerShellUploadFileForm.OKClick method through reflection is not allowed.

Erreur d'importation PowerShell

J’ai examiné l’un des Problèmes avec Sitecore PowerShell articles de blog et mis en œuvre les solutions qui y sont mentionnées. Malheureusement, cela n’a pas fonctionné pour moi.

J’ai suivi l’approche répertoriée ci-dessous et, lors de la mise en œuvre, j’ai réussi à importer les données du fichier « Excel » ou « CSV » dans Sitecore.

  • Télécharger le fichier dans la médiathèque
  • Importer des données à l’aide d’un script PowerShell

Télécharger le fichier dans la médiathèque

Créez un dossier spécifique dans la « Bibliothèque multimédia Sitecore » pour télécharger des fichiers « Excel » ou « CSV ». Ce dossier permettra également aux utilisateurs de télécharger et de sélectionner des fichiers à partir de celui-ci. Tous les fichiers destinés à l’importation de données dans Sitecore seront d’abord téléchargés et enregistrés ici.

Importer des données à l’aide d’un script PowerShell

Une fois le fichier téléchargé dans le « Dossier de la bibliothèque multimédia », il est prêt à être importé dans Sitecore. Sélectionnez le dossier « data » pour l’importation des données et exécutez le script « PowerShell ».

Remarque : Nous avons créé un script « PowerShell » qui lit les fichiers « Excel » ou « CSV » à partir du dossier « Médiathèque » désigné et inclut la logique de code nécessaire à l’importation des données. De plus, nous avons ajouté un script qui permet aux utilisateurs de sélectionner les fichiers souhaités dans la liste des fichiers téléchargés dans le dossier « Médiathèque ». Lorsque le fichier requis est sélectionné, la logique du code fonctionnera en arrière-plan pour importer les données.

Code PowerShell – Permettre aux utilisateurs de sélectionner un fichier spécifique

New-UsingBlock (New-Object Sitecore.Data.BulkUpdateContext){
    $importCSVFileFolderPath = "Your Media Library folder path"
    if (-Not (Test-Path $importCSVFileFolderPath)) 
    {
        Show-Alert -Title "'$importCSVFileFolderPath' doesn't exist !!"
        Write-Host "'$importCSVFileFolderPath' doesn't exist!" -ForegroundColor Red;
        Exit
    }

    #Code to Select the CSV file which needs to be imported
    $finalFileImportPath = "";
    $importCSVFilePathSelector = @{
        Title = "Data Import"
        Description = "Please select the necessary CSV file"
        OkButtonName = "Select"
        CancelButtonName = "Cancel"
        Width = 500
        Height = 300
        Parameters = @(@{ Name = "importFileFolder"; Title = "Select File"; Source="Datasource=$importCSVFileFolderPath"; Mandatory = $true; Editor="droptree"})
    }

    $importFilePathSelector = Read-Variable @importCSVFilePathSelector
    if($importFilePathSelector -eq "cancel")
    {
        Write-Host "Please select a CSV file to import" 
        Exit
    } 
    else
    {
        $finalFileImportPath = $importFileFolder.Paths.FullPath
    }
    
    #Remaining logic to import file data should start from here
}

Sortie du code ci-dessus

Fenêtre contextuelle d'importation de fichiers

Fenêtre contextuelle d'importation de fichier sélectionnée

Conclusion

Cette approche nous permet de contourner le problème d’importation de fichiers PowerShell et donne à l’utilisateur la possibilité de choisir quel fichier exact doit être importé.

J’espère que cela t’aides. Bon apprentissage!!!






Source link

décembre 5, 2023