none
Erreur dans un Foreach lecteur Csv RRS feed

  • Question

  • Bonjour,

    j'ai voulu ecrire un script de 2 maniere differente

    pour modifier le champ Telephone dans un compte AD

    mais la 2eme écrite ne fonctionne pas

    Jeton « in » inattendu dans une expression ou une instruction. 

    foreach($user in <<<<  $CSV) {
        + CategoryInfo          : ParserError: (in:String) [], ParentContainsErrorRecordException

    -------------------------------------------------

    Import-Module activedirectory

    $CSV = Import-Csv -Delimiter ';' .\Fichier_input.csv

    #$CSV | ForEach-Object{Set-ADUser -Identity $_.samAccountName -Replace @{telephoneNumber=$_.telephone}}

    ForEach-Object($user in $CSV)
    {
    $AD = $user.SamAccountName
    $tel = $user.telephone
    Set-ADUser $AD -Replace @{telephoneNumber=$tel}
    Write-Host -ForegroundColor Darkgreen "$samAccountName - $telephone"
    }

    -----------------------------------------------------------------

    une petite erreur de syntaxe quel part ? mon fichier CSV contient 2 colonnes

    samAccountName      

    telephone                     




    • Modifié Talonius06 mardi 11 décembre 2018 15:30
    mardi 11 décembre 2018 15:28

Réponses

  • Bonjour, ci-dessous quelques choses qui pourra vous aidez:

    colonnes pour le fichier CSV:

    Email,Telephone,MobilePhone
    user1@domain.fr,000000001,06000000

    Et le script PowerShell ci-dessous:

    $CSVData = Import-Csv -Path D:\Test\Info.csv
    If ((Get-Module).Name -notcontains "ActiveDirectory") {Import-Module ActiveDirectory}
    $Users = Get-ADUser -Filter * -Properties EmailAddress
    Foreach ($Line in $CSVData) {
        $Email = $Line.Email
        $Username = ($Users | Where {$_.EmailAddress -eq $Email}).SamAccountName
        $Params = @{
            Identity = $Username
            OfficePhone = $Line.Telephone
            MobilePhone = $Line.MobilePhone
        }
        If ($Username) {Set-ADUser @Params; Write-Host "Set new phone info for $Username"}
        Else {Write-Warning "No user found for email $Email"}
    }

    A tester sur deux utilisateurs non sensible.

    N'hésitez pas à revenir vers moi.

    Cordialement.

    • Marqué comme réponse Talonius06 mercredi 12 décembre 2018 13:11
    mercredi 12 décembre 2018 07:47

Toutes les réponses

  • Bonjour, ci-dessous quelques choses qui pourra vous aidez:

    colonnes pour le fichier CSV:

    Email,Telephone,MobilePhone
    user1@domain.fr,000000001,06000000

    Et le script PowerShell ci-dessous:

    $CSVData = Import-Csv -Path D:\Test\Info.csv
    If ((Get-Module).Name -notcontains "ActiveDirectory") {Import-Module ActiveDirectory}
    $Users = Get-ADUser -Filter * -Properties EmailAddress
    Foreach ($Line in $CSVData) {
        $Email = $Line.Email
        $Username = ($Users | Where {$_.EmailAddress -eq $Email}).SamAccountName
        $Params = @{
            Identity = $Username
            OfficePhone = $Line.Telephone
            MobilePhone = $Line.MobilePhone
        }
        If ($Username) {Set-ADUser @Params; Write-Host "Set new phone info for $Username"}
        Else {Write-Warning "No user found for email $Email"}
    }

    A tester sur deux utilisateurs non sensible.

    N'hésitez pas à revenir vers moi.

    Cordialement.

    • Marqué comme réponse Talonius06 mercredi 12 décembre 2018 13:11
    mercredi 12 décembre 2018 07:47
  • Merci pour votre aide ca fonctionne :

    #Import-Module activedirectory

    $CSV = Import-Csv -Delimiter ';' .\Fichier_input.csv

    #$CSV | ForEach-Object{Set-ADUser -Identity $_.samAccountName -Replace @{telephoneNumber=$_.telephone}}


    If ((Get-Module).Name -notcontains "ActiveDirectory") {Import-Module ActiveDirectory}

    $Users = Get-ADUser -Filter * -Properties SamAccountName
    Foreach ($Line in $CSV)
        {
        $Sam = $Line.SamAccountName
        $Username = ($Users | Where {$_.SamAccountName -eq $Sam}).SamAccountName
            $Params = @{
            Identity = $Username
            OfficePhone = $Line.Telephone
            #MobilePhone = $Line.MobilePhone
            }
        If ($Username) {Set-ADUser @Params; Write-Host -ForegroundColor Darkgreen "Changement du Tel pour $Username > $Line"}
        Else {Write-Warning "Utilisateur non trouvé pour $Sam"}
    }

    mercredi 12 décembre 2018 09:10
  • Super, n'hésitez pas à valider le post comme "traité".

    Merci d'avance.

    Cordialement.

    mercredi 12 décembre 2018 09:38