Question Boucle For each qui ne fonctionne pas

Plus d'informations
il y a 2 ans 7 mois #31362 par LOCO
Bonjour,
Je debute dans les scripts PS...
J'ai regardé les tutos, et utilisé un exemple pourtant facile mais je n'arrive pas a faire une boucle sur un import csv...
Comme cela ne fonctionait pas, j'ai rajouté les headers et le delimiter...
$rows = Import-Csv -Path C:\temp\phone_user_list2.csv –header UPN, OfficePhone –delimiter ; $rows | Format-Table ForEach ($r in $rows) {  Write-Host $($r.UPN)  Write-Host $($r.OfficePhone)     $upn = $r.UPN     $u = Get-ADUser -Filter {userprincipalname -eq $upn} -Properties OfficePhone      if ($u)     {         Write-Host $upn $u.OfficePhone $r.Number         Set-ADUser -Identity $u.SamAccountName -OfficePhone $r.Number #-WhatIf     }     else     {         Write-Host $r.UPN not found     }  }

et j'obtiens l'erreur:

Get-ADUser : La variable : « upn » trouvée dans l’expression : $upn n’est pas définie.
Au caractère \\eu-nas\Info\Projets\Telephonie -  Teams\FR-TeamsVoiceLicensing.ps1:12 : 10
+     $u = Get-ADUser -Filter {userprincipalname -eq $upn} -Properties  ...
+          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument : (:) [Get-ADUser], ArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADU 
   ser
 
 not found

J'ai beau cherché, tous les exemples que je trouve sont identique.
J'ai essayé avec un autre fichier csv, une seule ligne...
Bref, je suis au bout...
Un peu d'aide serait la bienvenue!
Merci d'avance!

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

Plus d'informations
il y a 2 ans 7 mois - il y a 2 ans 7 mois #31363 par Philippe
Salut LOCO

regarde aussi dans le fichier CSV si il n'y a pas de ligne vide ou sans UPN
pour gérer ce cas je ferai un filtre des ligne vide

met le délimiteur entre guillemets 
pour finir le header est inutile si il ce trouve dans le CSV
$rows = Import-Csv -Path C:\temp\phone_user_list2.csv –delimiter ";"
$rows | where {$_ -ne $null} | ForEach {
    $r = $_
    Write-Host $($r.UPN)
    Write-Host $($r.OfficePhone)
    $upn = $r.UPN
    $u = Get-ADUser -Filter { userprincipalname -eq $upn } -Properties OfficePhone
    if ($u) { 
        Write-Host $upn $u.OfficePhone $r.Number
        Set-ADUser -Identity $u.SamAccountName -OfficePhone $r.Number 
        #-WhatIf
        }     
    else {
        Write-Host $r.UPN not found
        }  
    }


bon apprentissage de powershell tu est en bonne voie   
Dernière édition: il y a 2 ans 7 mois par Philippe.

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

Temps de génération de la page : 0.089 secondes
Propulsé par Kunena