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
とテーブルがいっぱいです。 何が問題なのですか?