У меня есть следующий код, который подсчитывает количество PDF-файлов в определенных c папках, подсчитывает количество листов в этих c PDF-файлах и отправляет электронное письмо с этими данными.
Я анонимизировал часть скрипта.
Set-ExecutionPolicy Unrestricted
#This gets the number of PDF files in the Archive folder, this shows the successful uploads to Portal.
$Archive = $($compareDate = (Get-Date).AddDays(-7)
@(Get-ChildItem -Path "C:\Archive\*.*" -Filter *.pdf -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count)
#This gets the number of PDF files in the Exception folder, this shows the failed uploads to Portal.
$Exception = $($compareDate = (Get-Date).AddDays(-7)
@(Get-ChildItem -Path "C:\Exception\*.*" -Filter *.pdf -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}).Count)
#This gets the number of pages in all PDF files succsssfully upoaded to Portal.
$folder = $($compareDate = (Get-Date).AddDays(-7)
@(Get-ChildItem -Path "C:\Archive\*.*" -Filter *.pdf -Recurse | Where-Object { $_.LastWriteTime -gt $compareDate}))
$Count = $Files = 0
foreach($File in (Get-ChildItem -Path $Folder -Filter *.pdf)){
$Pages = (C:\PS_Scripts\xpdf-tools-win-4.02\xpdf-tools-win-4.02\bin64\pdfinfo.exe $File.FullName | Select-String -Pattern '(?<=Pages:\s*)\d+').Matches.Value
$Count += $Pages
$Files++}
$Count
#This calculates the saving on sheets of paper, not including ink and printers. Each ream of 500 sheets costs us £1.98. So a single sheet costs 0.4 pence
$Saving = (($Count*0.4)/100)
#This converts the number to £nn.nn
$Pounds = '{0:C}' -f $Saving
$Pounds
#This gets Mondays Date
$Friday= (Get-Date).AddDays(-7).ToString('dd/MM/yyyy')
#This gets Sundays Date
$Thursday= (Get-Date).AddDays(-1).ToString('dd/MM/yyyy')
#This begins the email
$recipients = "user1 <user1@email.com>"
send-mailmessage -from "emailtest@email.com" `
-to $recipients `
-Subject "Weekly Data" `
-body "Hi all,
<br />
<br />
Please find below the weekly stats for Reports going to Portal.
<br />
<br />
From Friday to Thursday ($Friday- $Thursday), there were $Archive successful automated reports sent to Portal.
<br />
<br />
This saved us printing, and scanning $Count pages of paper.
<br />
<br />
This amounts to roughly $Pounds in savings during this period on paper alone!
<br />
<br />
Also, during this same period, there were $Exception failed reports sent to Portal, these have either been rectified or will be rectified imminently.
<br />
<br />
<br />"`
-BodyAsHtml `
-priority Normal `
-dno onSuccess, onFailure `
-smtpServer egat@email.com
Set-ExecutionPolicy Restricted
Моя проблема связана именно с $ Pounds, он делает все, что я хочу. Он выводит вычисление в следующем формате, £ nn.nn, например: 45,52 фунтов стерлингов. Я подтвердил это, поскольку в Powershell ISE я возвращаю значение $ Pounds, чтобы проверить его работу.
Но когда я получаю электронной почты, знак £ заменен на "?", см. копию сообщения электронной почты ниже,
Всем привет,
Ниже представлена еженедельная статистика отчетов, отправляемых на портал.
С понедельника по воскресенье (01.05.2020 - 07.05.2020) на прошлой неделе на портал было отправлено 235 успешных автоматических отчетов.
Это спасло нас от печати и сканирования 1256 страниц на бумаге.
Это составляет примерно 5,02 евро экономии за этот период только на бумаге!
Кроме того, в течение этого же периода на портал было отправлено 0 неудачных отчетов, они либо были исправлены или будет исправлено в ближайшее время.
Почему не отображается 5,02 фунтов стерлингов?
Любая помощь будет принята с благодарностью.
Спасибо, Ухудж