2016-04-26 47 views
0

我有一個腳本,用於監視AD中的用戶證書。它工作正常,但有一件事我不明白。 這裏的中頻部分:獲取日期不適用於任務調度程序

If ($Certs.expiresin -contains $days) 
{ 
$strings = $Certs | where {$_.expiresin -eq $days} 
$table = $strings | select @{n='Username';e={$_.Fullname}}, @{n='Email';e={$_.subject}}, @{n='Expires';e={$_.expiresafter}} 
Send-MailMessage @toadmin -Body $toadminbody -BodyAsHtml -Encoding $encoding 

foreach ($string in $strings)  { 
$To = $string.subject 
$smtpsettings = @{ 
To = $To 
From = $From 
Subject = $Subject 
SmtpServer = $SmtpServer 
} 
if ($string.subject -like '*@*') 
{ 
$date = Get-date $string.ExpiresAfter -f D 
Send-MailMessage @smtpsettings -body $emailbody -Encoding $encoding 
} 
    } 
} 

機身設置爲

$emailbody = @() 
$emailbody += "Certificate bla bla bla expires in $date" 
$emailbody += "bla bla bla bla bla" 
$emailbody = $emailbody | Out-String 

問題是,當我從任務調度運行腳本,用戶通知來沒有任何$date和一個空的HTML表格。它只是錯過了。但是當我從ISE啓動這個腳本時,第一次運行結果缺少$date和表,但第二個按預期工作,$date和表被填滿。 它有什麼不對?

回答

0

通過替換變量解決了這個問題。