none
Script Powershell Import-csv distant RRS feed

  • Question

  • Bonjour/Bonsoir à tous et à toutes :

    Débutant en PowerShell, j'aurais besoin d'un coup de main sur un script.

    Je réalise actuellement un script qui va me permettre de créer des utilisateurs Active Directory à distance automatiquement via un fichier csv.

    J'ai sur mon poste un script PS1 et un fichier utilisateurs.csv.

    En exécutant le script PS1, il va prendre la main sur un serveur AD, il va charger le module activedirectory, il va importer le fichier csv contenant les utilisateurs puis il va les ajouter dans son AD.

    Script

    #Prise à Distance du Serveur Active Directory
    invoke-command -computername pc-test -Authentication CredSSP -credential domaine\administrateur -scriptblock {

    #Importation du module Active Directory
    import-module activedirectory

    #Importation du CSV
    $utilisateurs = Import-Csv -path "\\X.X.X.X\script\Utilisateurs.csv" -delimiter ";"

    Mon souci, c'est que le script fonctionne très bien quand je balance le csv sur le serveur et que je met "-path "C:\script\Utilisateurs.csv""

    Mais quand je met "-path \\X.X.X.X\script\Utilisateurs.csv", ça ne fonctionne pas. J'ai besoin de passer par un partage car j'aimerai utiliser un seul fichier csv et non créer un fichier csv sur chaque serveur AD. J'ai fais pas mal de recherches, sans succès ..

    Avez vous une idée ?

    Merci

    lundi 25 novembre 2013 16:53

Réponses

  • Salut,

    Ton problème ne semble pas être dû au powershell mais à un problème de droits d'accès ou de syntaxe.
    Plusieurs pistes : 

    -que retourne:

    test-path "\\X.X.X.X\script\Utilisateurs.csv"

    ?

    -Si cela retourne faux, est-ce que :

    test-path \\X.X.X.X\script\Utilisateurs.csv" -isValid

    te retourne bien true ?

    -Sinon je pense à priori à un problème de droits d'accès..

    vendredi 27 décembre 2013 14:13
  • Bonjour,

    je ne vois pas trop l'intérêt de le faire à distance ... surtout que c'est bien le genre d'opération que l'on lance une fois seulement et pas sur chaque contrôleur de domaine... 

    Comme le dit "Moignon", il s'agit sans doute d'un problème de droits car import-csv marche très bien avec un chemin réseau.

    Une autre solution serait de passer en argument le contenu de votre fichier CSV.

    $content = import-csv -path "c:\temp\fichier.csv"

    invoke-command -computername pc-test -Authentication CredSSP -credential domaine\administrateur -scriptblock {

    #Importation du module Active Directory
    import-module activedirectory

    #Importation du CSV
    $utilisateurs = $args

    }

    -ArgumentList $Content

    Si vous utilisez plusieurs arguments:

    $content = import-csv -path "c:\temp\fichier.csv"

    invoke-command -computername pc-test -Authentication CredSSP -credential domaine\administrateur -scriptblock {

    #Importation du module Active Directory
    import-module activedirectory

    #Importation du CSV
    $utilisateurs = $args[0]

    }

    -ArgumentList @($Content,$variable)


    www.alexwinner.com

    lundi 30 décembre 2013 15:38

Toutes les réponses

  • Salut,

    Ton problème ne semble pas être dû au powershell mais à un problème de droits d'accès ou de syntaxe.
    Plusieurs pistes : 

    -que retourne:

    test-path "\\X.X.X.X\script\Utilisateurs.csv"

    ?

    -Si cela retourne faux, est-ce que :

    test-path \\X.X.X.X\script\Utilisateurs.csv" -isValid

    te retourne bien true ?

    -Sinon je pense à priori à un problème de droits d'accès..

    vendredi 27 décembre 2013 14:13
  • Bonjour,

    je ne vois pas trop l'intérêt de le faire à distance ... surtout que c'est bien le genre d'opération que l'on lance une fois seulement et pas sur chaque contrôleur de domaine... 

    Comme le dit "Moignon", il s'agit sans doute d'un problème de droits car import-csv marche très bien avec un chemin réseau.

    Une autre solution serait de passer en argument le contenu de votre fichier CSV.

    $content = import-csv -path "c:\temp\fichier.csv"

    invoke-command -computername pc-test -Authentication CredSSP -credential domaine\administrateur -scriptblock {

    #Importation du module Active Directory
    import-module activedirectory

    #Importation du CSV
    $utilisateurs = $args

    }

    -ArgumentList $Content

    Si vous utilisez plusieurs arguments:

    $content = import-csv -path "c:\temp\fichier.csv"

    invoke-command -computername pc-test -Authentication CredSSP -credential domaine\administrateur -scriptblock {

    #Importation du module Active Directory
    import-module activedirectory

    #Importation du CSV
    $utilisateurs = $args[0]

    }

    -ArgumentList @($Content,$variable)


    www.alexwinner.com

    lundi 30 décembre 2013 15:38