Question Envoi d'un mail avec une variable dans le -body

Plus d'informations
il y a 10 ans 9 mois #19780 par noblot
Bonjour à tous,

je vous faire part d'un souci que je 'n'arrive pas à réglé seul, alors par avance merci de votre aide

Mon Script Powershell créé des utilisateurs avec un password qu'il devront changer à la première connexion et j'exporte ces données dans un csv.
Puis je souhaiterais envoyer les informations de password dans leur ancienne boite mail.

la commande pour envoyé que j'utilise est :


Send-MailMessage -To $externalEmail -Subject 'User and Password' -BodyAsHtml $pwdUser -smtpserver smtp.office365.com -usessl -Credential $UserCredential
}

les variables sont récupérées d'un CSV , tous fonctionne correctement ,cependant je récupère dans mon courriel les variables mais non leurs valeurs.
Comment faites vous pour faire passer autre chose qu'un \"string \" dans l'argument \"Body\" .

J'espère avoir été clair .... grandement merci de votre aide

Bien Cordialement,

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

Plus d'informations
il y a 10 ans 9 mois #19797 par Laurent Dardenne
Salut,
karol écrit:

Comment faites vous pour faire passer autre chose qu'un \"string \" dans l'argument \"Body\" .

On ne peut pas, car le paramètre est du type string.
Et le paramètre BodyAsHtml est de type boolean ...
karol écrit:

J'espère avoir été clair

Oui, mais sans le code sous les yeux difficile de t'aider.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 9 mois #19799 par noblot
Bonjour Laurent ,
merci de ton aide. ci dessous le script:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted
$UserCredential = Get-Credential

Import-Module MsOnline

$LogFile = \"C:\create-Compte2.log\"

Start-transcript -path $Logfile

Connect-MsolService -Credential $UserCredential

$user = Import-Csv -Path \"C:\User_Paris.csv\" -Delimiter \";\"

$ResultCreate = ForEach($user in $user)
{New-MsolUser -userPrincipalName $user.UserPrincipalName -displayname $user.displayname -firstname $user.firstname -lastname $user.lastname -Department $user.Department -Title $user.Title -MobilePhone $user.MobilePhone -Office $user.Office -PhoneNumber $user.PhoneNumber -usagelocation $user.usagelocation -StreetAddress $user.StreetAddress -PostalCode $user.PostalCode -City $user.City -Country $user.Country
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses \"forsys:ENTERPRISEPACK\"
}

$ResultCreate | select Password, displayname, UserPrincipalName | export-csv c:\ExportResult2.csv -NoTypeInformation

$FilePassword = Import-Csv -Path \"c:\ExportResult2.csv \" -Delimiter \";\"
foreach ($pwd in $FilePassword)
{
$externalEmail = $user.PreviousEmail
$pwdUser = $pwd.password
$newEmail = $pwd.UserPrincipalName
Send-MailMessage -To $externalEmail -Subject 'User and Password' -BodyAsHtml $pwdUser -smtpserver smtp.office365.com -usessl -Credential $UserCredential
}

Dans les grandes lignes , je crée des comptse exchange dans office365 avec des attributs tirés d'un fichier CSV. une fois les comptes créés ,le password et email sont exportés dans un autre CSV et je souhaiterais automatiser l'envoie du mot de passe à l'ancienne adresse. tous fonctionne correctement sauf que dans le corp du mail,je vois \"$pwdUser \" au lieu du mot de passe :(

n'y a t'il pas un argument de qui me permet de passe une variable dans le corp du mail ?

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

Plus d'informations
il y a 10 ans 9 mois #19801 par Laurent Dardenne
karol écrit:

n'y a t'il pas un argument de qui me permet de passe une variable dans le corp du mail ?

Le seul paramètre concerné est -Body, la construction de son contenu peut se baser sur la substitution de variable :
[code:1]
foreach ($pwd in $FilePassword)
{
$externalEmail = $user.PreviousEmail
$newEmail = $pwd.UserPrincipalName

#Peut contenir des balises HTML si on précise -BodyAsHtml
$Body =@\"
Votre mot de passe est :
$($pwd.password)

Suite du message
\"@
Send-MailMessage -To $externalEmail -Subject 'User and Password' -Body $Body -BodyAsHtml -smtpserver smtp.office365.com -usessl -Credential $UserCredential
}
[/code:1]
Ceci dit la construction de la ligne d'envoi de mail me semble erroné.
Et à priori, tu peux éviter l'usage de fichier csv intermédiaire

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 9 mois #19804 par noblot
Wahou merci , effectivement je récupère les valeurs de mes variables dans le corp du mail.MAIS.....

je vois ça dans le mail:

Votre mot de passe est
@{UserPrincipalName=titi@labinfra.com; Password=Hoqo7424}

je n'arrives pas à suprimer le \"@{\" devant le USERprincipalName

de meme que je n'arrives pas à mettre le password sur la ligne du dessous

Encore une idée fantastique à me proposer??

je mettrais mon code complet en ligne dès que le script sera tout propre:)

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

Plus d'informations
il y a 10 ans 9 mois #19805 par Laurent Dardenne
karol écrit:

je n'arrives pas à suprimer le \"@{\" devant le USERprincipalName

Vérifie ta syntaxe, car la présence du \"@{\" indique que ton code transforme le contenu d'un objet et pas la propriété d'un objet.
Ceci fonctionne :
[code:1]
#crée un objet
$pwd='s'|select password
$pwd.password='abc456'
$pwd.password

$Body =@\"
Votre mot de passe est :
$($pwd.password)

Suite du message
\"@
$body
[/code:1]
Ceci aussi, mais ne renvoie pas le résultat souhaité :
[code:1]
$bodybag=@\"
Votre mot de passe est :
$($pwd)

Suite du message
\"@
$bodybag
[/code:1]

Tutoriels PowerShell

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

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