Meilleur auteur de réponses
Erreur dans un Foreach lecteur Csv

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
Réponses
-
Bonjour, ci-dessous quelques choses qui pourra vous aidez:
colonnes pour le fichier CSV:
Email,Telephone,MobilePhone
user1@domain.fr,000000001,06000000Et 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
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,06000000Et 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
-
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"}
} -