S'il vous plaît aidez-moi à corriger le code ci-dessous. J'essaie d'exclure le nom de fichier qui a déjà reçu l'email mais -and $i.file -ne $SentUsers
n'exclut pas les noms de fichiers déjà envoyés.Exclure les valeurs déjà dans le fichier - Foreach loop
Je suis en train ci-dessous les choses:
- Ecrire nom de fichier dans un fichier
- Get nom de fichier dans un fichier
- Exclure le nom de fichier qui a déjà recieved un email en utilisant
-and $i.file -ne $SentUsers
- Copier le nouveau nom de fichier en cours pour classer en écrasant le fichier existant
Voici mon code complet:
$Q = "
*** SQLCode Here ***
"
$ab = Invoke-Sqlcmd -ServerInstance Serv1 -Database DB1 -Query $Q
## Write filename to a file
$l = $ab | select file | Out-File C:\temp\fname.txt
## Get filename to a file
$SentUsers = Get-Content -Path C:\temp\fname.txt
foreach ($i in $cr) {
## Exclude filename which already recieved an email by using -and $i.file -ne $SentUsers
if ($i.Uid -eq 'No' -and $i.UIntheTeam -eq 'No' -and $i.file -ne $SentUsers) {
$user = $i.User
Send-MailMessage -To @("abc") -Cc $user -From 'abc1' -SMTPServer abc.co.jp -Subject "TestSub" -Body "
** Mail Message Body Here **
"
} else {
'Exit'
}
}
# Copy new current file name to file by overwriting existing file
$ab | select file | Out-File -FilePath C:\temp\fname.txt
$ SentUsers est un tableau. Vous voulez utiliser -notin au lieu de -ne. – mjolinor
@mjolinor, j'ai utilisé la clause -notin mais je reçois toujours l'email pour quel utilisateur a déjà reçu l'email. Pouvez-vous suggérer quoi d'autre puis-je faire pour arrêter $ utilisateur recevoir l'email seulement une fois s'il rencontre la condition. Merci – DBOn