パスワードの有効期限が 10 日以内に切れるユーザーに電子メールを生成する powershell スクリプトがあります。メールはHTML形式になっていますが、一文だけ文字の色を赤にして注意を喚起したいです。ただし、html コードを囲む引用符に問題があります。二重引用符を使用すると、powershell はリテラル メッセージを出力し、一重引用符でエラー メッセージを表示します。powershell メールで複数のフォントの色を使用する方法はありますか?
ここに私が現在使用しているコードがあります。また、これは powershell でのスクリプトの最初の試みであることも付け加えておきます。そのため、長い道のりを行っている場合は、いくつかの入力に対してオープンです。
# Import ActiveDirectory module for Powershell V2 AD cmdlets
import-module activedirectory
# Uncomment the following line to include optional cmdlets included with Exchange 2010 schema changes. No such cmdlets are included in this script
# add-pssnapin microsoft.exchange.management.powershell.e2010
#Import the maximum password age from Active Directory GPO policy from domain
$maxdays=(Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays
$date = date
# Simple HTML Message to format body of email. Body is broken up into four parts for appearance and for easy function insertion into message.
$body1 += "<html><body><br> Your network password will expire in "
$body2 += " day(s).</body><html>"
$body3 += "<html><body><br>Employees of Organization, when you receive this email please visit https://scriptlogic/iisadmpwd/aexp2b.asp to reset your network password."
$body3 += "<br>If you are <font color =""#99000"">not employed by Organization</font>, please visit https://gateway.organization.org to reset your network password using our Citrix website."
$body3 += "<br>If you need assistance resetting your password, please contact the Ibformation Service Department at 867-5309"
$body3 += "<br>If you have a portable device, smart phone, etc. that you use to access the Network the new password will need to be updated on these devices also."
$body3 += "<br><br>Thank you,"
$body3 += "<br> IS Department"
$body3 += "<br><img src='P:\Documents\PowerShell\Scripts\password\logo.jpg' alt='logo'/>"
$body3 += "<br><br><hr>"
$body3 += "From <b> IS Department</b>"
$body3 += "<br>The information contained in this e-mail and any accompanying documents is confidential, may be privileged, and is intended solely for the person and/or entity to whom it is"
$body3 += "<br>addressed (i.e. those identified in the <b> To: </b> and <b> cc:</b> box). They are the property of this organization. Unauthorized review, use, disclosure, or copying of this"
$body3 += "<br>communication, or any part thereof, is strictly prohibited and may be unlawful. The IT Department thanks you for your cooperation.<br>"
$body4 += "<br><hr><br></body></html>"
# Combine body segments into string for display
$bod1y=$body1 | out-string
$body2=$body2 | out-string
$body3=$body3 | out-string
$body4=$body4 | out-string
#Gather ADusers which are enabled, password is set not set to never expire and all properties of user object. *Note Extension Attributes will not show up unless they are populated.
(Get-ADUser -filter {(Enabled -eq "True") -and (PasswordNeverExpires -eq "False")} -properties *) | Sort-Object pwdLastSet |
#Loop to validate password age of each account and generate email. Emails to non-domain addresses are generated based on extensionattribute1 and extensionattribute2.
#Active Directory is pre-populated with the user address as extensionattribute1 and domain information in extensionattribute2. For example, johndoe = extensionattribute1
# gmail.com = extensionattribute2.
foreach-object {
$lastset=Get-Date([System.DateTime]::FromFileTimeUtc($_.pwdLastSet))
$expires=$lastset.AddDays($maxdays).ToShortDateString()
$daystoexpire=[math]::round((New-TimeSpan -Start $(Get-Date) -End $expires).TotalDays)
$samname=$_.samaccountname
$firstname=$_.GivenName
$lastname=$_.SN
$extensionattribute1=$_.extensionattribute1
$extensionattribute2=$_.extensionattribute2
$recipient="$extensionattribute1@$extensionattribute2"
if (($daystoexpire -ge 1) -and ($daystoexpire -le 10)) {
$ThereAreExpiring=$true
$email = @{
to = "$recipient"
from = 'IS_Notifications@org.org'
subject = "$firstname $lastname your network password will expire in $daystoexpire day(s)"
body = "$firstname $lastname" + " $body1" + "$daystoexpire" + "$body2" + "$body3" + "$date" + "$body4"
smtpserver = 'smtp.server.org'
# attachments = "p:\documents\citrix\citrix_password_reset.doc"
}
Send-MailMessage @email -BodyAsHTML
}
}`