2016-04-26 6 views
0

私はADのユーザー証明書を監視するスクリプトを持っています。それはうまく動作しますが、私は理解できません。 は、ここでIFセクションです:get-dateがタスクスケジューラから機能しない

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とテーブルがなくなっていますが、2番目のものは意図した通りに動作し、$dateとテーブルがいっぱいです。 何が問題なのですか?

答えて

0

変数を置き換えることでこれを解決しました。