none
Format export-csv : 1 propriete = 1 colonne RRS feed

  • Question

  • Bonjour,

    Etant débutant en powershell, je bloque sur un problème surement pas très compliqué pour vous, les experts :D
    Je m'explique :
    Je souhaite manipuler le résultat de cette commande : Get-Share partage | select name -exp SecurityDescriptor | select name,user,Permission | ft -AutoSize

    qui me donne le résultat suivant :
    Name    User                    Permission
    ----    ----                    ----------
    Partage Tout le monde           FullControl
    Partage Utilisateurs du domaine FullControl

    J'aimerais l'exporter dans un .csv en respectant le format des colonnes (C'est à dire que je voudrais dans mon csv une colonne "User" avec en dessous "Tout le monde" dans le même colonne.
    Quand je fais un Export-Csv le "Tout le monde" déborde sur 3 colonnes (Une pour chaque mot) et du coup ça décale tout...

    Auriez-vous une solution pour moi SVP ?

    Peps

    lundi 24 juin 2019 15:51

Réponses

  • Quand je fais un Export-Csv le "Tout le monde" déborde sur 3 colonnes (Une pour chaque mot) et du coup ça décale tout...

    C'est lié au délimiteur et au logiciel avec lequel tu va le lire.

    Il est possible de configurer un caractère spécfique comme délimiteur par exemple export-csv -path monfichier -delimiter ";".

    Il est également possible de gérer les caractères accentués en utilisant -encoding UTF8  par exemple.

    Selon le caractère utilisé tu devras dans excel cliqué sur données, convertir et précisé ton caractère.

    Si tu veux réutilisé tes info dans Powershell import-csv permet également de précisé le délimiteur.


    lundi 24 juin 2019 16:02

Toutes les réponses

  • Quand je fais un Export-Csv le "Tout le monde" déborde sur 3 colonnes (Une pour chaque mot) et du coup ça décale tout...

    C'est lié au délimiteur et au logiciel avec lequel tu va le lire.

    Il est possible de configurer un caractère spécfique comme délimiteur par exemple export-csv -path monfichier -delimiter ";".

    Il est également possible de gérer les caractères accentués en utilisant -encoding UTF8  par exemple.

    Selon le caractère utilisé tu devras dans excel cliqué sur données, convertir et précisé ton caractère.

    Si tu veux réutilisé tes info dans Powershell import-csv permet également de précisé le délimiteur.


    lundi 24 juin 2019 16:02
  • Merci pour ta réponse, j'ai réussi a exporter avec un délimiteur et les colonnes sont bien respectées dans mon fichier csv.

    Cependant je recontre un autre soucis...

    voici le bout de code que j'aimerais faire fonctionner :

    foreach ($share in $shares) {
    $gs= 'Get-share {0}' -f $share
    Invoke-Expression $gs | select name -exp SecurityDescriptor | select name,user,permission | Export-Csv -Path "$filepath\share2.csv" -Delimiter ";" -encoding UTF8
    }
    
    $shrs = Import-Csv "$filepath\share2.csv" -Header 'shrname','user','permission' -Delimiter ";" -encoding UTF8 
    foreach ($shr in $shrs){
        $row++
        $dataSheet.Cells[$row,$column].Value=$shr.shrname
        $column++
        $dataSheet.Cells[$row,$column].Value=$shr.user
        $column++
        $dataSheet.Cells[$row,$column].Value=$shr.permission
        $column--;$column--
        }

    Le problème c'est que j'ai cette erreur pour toutes les valeurs de $shr.XXXXX :

    Indexation impossible dans un tableau Null.
    Au caractère C:\Users\Administrateur\Desktop\ExcelVF.ps1:199 : 5
    +     $dataSheet.Cells[$row,$column].Value=$shr.shrname
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
        + FullyQualifiedErrorId : NullArray

    Pourtant lorsque je fais un echo $shr, la variable contient bien la bonne valeur !

    PS C:\Users\Administrateur\Desktop> echo $shr
    
    shrname                                                                    user                                                                       permission                                                                
    -------                                                                    ----                                                                       ----------                                                                
    Partage                                                                    Utilisateurs du domaine                                                    FullControl

    De plus dans mon script j'ai déjà utilisé cette méthode et ça fonctionne très bien !

    Peps

    EDIT : Erreur bête de ma part... J'avais rajouter ce bout de code à la fin de mon script, après avoir fait $excelPackage.Dispose() ... Je passe en résolu, merci Philippe.

    • Modifié peps29 mardi 25 juin 2019 13:38
    mardi 25 juin 2019 09:44