2014-09-24 136 views
0

我对脚本编程相当陌生,因此请和我一起裸露... 我找到了这个密码过期脚本,我想在本地开头(标题)中嵌入本地图像HTML邮件和结尾处(页脚),但是我在收到的电子邮件中拍摄图像的任何方法仍会以红色叉号显示。在脚本中嵌入图像

欣赏是否有人能够协助。

$PPNConfig_DebugLevel = 0 

$PPNConfig_NotificationTimeInDays = 100 
$PPNConfig_SMTPServerAddress = "smtp.somedomain.local" 
$PPNConfig_FromAddress  = "[email protected]" 
$PPNConfig_BodyIsHtml  = $true 
$PPNConfig_DirectoryRoot = "LDAP://DC=somedomain,DC=local" 
$PPNConfig_MaxPageSize = 1000 

function Configure-Notification-Subject($nName, $nNumDays) 
{ 
    return "$nName, your password will expire in $nNumDays days." 
} 

function Configure-Notification-Body-Html($nName, $nNumDays) 
{ 

    $bodyHtml = " 
Body text here.... 
    " 

    return $bodyHtml 
} 

function Get-Domain-MaxPassword-Age 
{ 
    $ThisDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() 
    $DirectoryRoot = $ThisDomain.GetDirectoryEntry() 

    $DirectorySearcher = [System.DirectoryServices.DirectorySearcher]$DirectoryRoot 
    $DirectorySearcher.Filter = "(objectClass=domainDNS)" 
    $DirectorySearchResult = $DirectorySearcher.FindOne() 

    $MaxPasswordAge = New-Object System.TimeSpan([System.Math]::ABS($DirectorySearchResult.properties["maxpwdage"][0])) 

    return $MaxPasswordAge 
} 

function Get-Users-With-Expiring-Passwords 
{ 
    $UsersToNotify = @() 

    $DirectoryRoot = New-Object System.DirectoryServices.DirectoryEntry($PPNConfig_DirectoryRoot) 
    $DirectorySearcher = New-Object System.DirectoryServices.DirectorySearcher($DirectoryRoot) 
    $DirectorySearcher.filter = "(&(objectCategory=Person)(objectClass=User)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!(userAccountControl:1.2.840.113556.1.4.803:=65536)))" 
    $DirectorySearcher.pagesize = $PPNConfig_MaxPageSize 

    $MaxPasswordAge = Get-Domain-MaxPassword-Age 
    $MaxPasswordAgeDays = $MaxPasswordAge.Days 

    $DirectorySearchResult = $DirectorySearcher.FindAll() | 
    ForEach-Object -ErrorAction "SilentlyContinue" ` 
    -Process ` 
    { 
     $PwdChanged = ([adsi]$_.path).psbase.InvokeGet("PasswordLastChanged") 

     $DaysTillExpiring = $MaxPasswordAgeDays - ((Get-Date) - $PwdChanged).Days 

     if ($DaysTillExpiring -le $PPNConfig_NotificationTimeInDays) 
     { 
      $UserToAdd = New-Object psobject 

      $UserToAdd | Add-Member NoteProperty -Name "Name" -Value ([adsi]$_.path).name[0] 
      $UserToAdd | Add-Member NoteProperty -Name "Email" -Value ([adsi]$_.path).mail[0] 
      $UserToAdd | Add-Member NoteProperty -Name "DaysLeft" -Value $DaysTillExpiring 

      $UsersToNotify += $UserToAdd 
     } 

    } 

    return $UsersToNotify 
} 

function Send-Email-Notification-Of-Expiry($nName, $nEmail, $nDaysLeft) 
{ 
    $SmtpClient = New-Object System.Net.Mail.SmtpClient($PPNConfig_SMTPServerAddress) 

    $NewMail = New-Object System.Net.Mail.MailMessage 
    $NewMail.From = $PPNConfig_FromAddress 
    $NewMail.To.Add($nEmail) 
    $NewMail.Subject = Configure-Notification-Subject $nName $nDaysLeft 

    if ($PPNConfig_BodyIsHtml) 
    { 
     $NewMail.IsBodyHtml = $true 
     $NewMail.Body = Configure-Notification-Body-Html $nName $nDaysLeft 
    } 
    else 
    { 
     $NewMail.IsBodyHtml = $false 
     $NewMail.Body = Configure-Notification-Body-Plain $nName $nDaysLeft 
    } 

    $SmtpClient.Send($NewMail) 
} 

$UsersToNotify = Get-Users-With-Expiring-Passwords 

foreach ($User in $UsersToNotify) 
{ 
    if ($PPNConfig_DebugLevel -gt 0) 
    { 
     Write-Host $User 
    } 
    else 
    { 
     Send-Email-Notification-Of-Expiry $User.Name $User.Email $User.DaysLeft 
    } 
} 
+0

所以在这个脚本,你到底是在试图配置页眉和页脚? – arco444 2014-09-24 14:14:22

回答