Я намеренно написал ошибку в следующем:
Try
{
Start-Transcript -Path $Errorlog
#$TermRep = Import-Csv $TermReport
#$Donna = Import-Csv $HRReport
$TermRep = Import-Csv $Path\TestFileTerm2.csv
$Donna = Import-Csv $Path\TestFileDonna.csv
#Job to match users between CSVs
$Job = ForEach($i in $TermRep){
$TID = $($i.'Person ID')
ForEach($u in $Donna){
$DID = $($u.UserID)
If($TID -eq $DID){
"Move-ADObject -Identity $TID -TargetPath 'PATH' `r`n"
}
}
}
Stop-Transcript
#Send email of results or statement of no results
$smtpServer = "blah.net"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = $EmailFrom
$msg.To.Add($EmailTo)
#$msg.To.Add($EmailTo1)
#$msg.To.Add($EmailTo2)
$msg.Priority = "High"
If($Job -notlike ""){
$msg.Subject = "Open a ticket for Terminated Exception Users for Lit-hold changes."
$msg.Body = "Fix these users"
}
Else{
$msg.Subject = "Terminated Exception Users Script was run for Lit-holds"
$msg.Body = "No users need fixing."
}
$smtp.Send($msg)
}
Catch [system.exception]
{
#If the script errors (e.g. it cannot find one of the lists) send the following email.
$smtpServer = "blah.net"
$msg = new-object Net.Mail.MailMessage
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$msg.From = $EmailFrom
$msg.To.Add($EmailTo)
#$msg.To.Add($EmailTo1)
#$msg.To.Add($EmailTo2)
$msg.Priority = "High"
$msg.Subject = "Open a ticket for Terminated Exception Users - Script Failure"
$msg.Body = "Script error."
$smtp.Send($msg)
}
В частности, $TermRep = Import-Csv $Path\TestFileTerm2.csv
не существует. Тем не менее, моя расшифровка возвращается следующим образом:
**********************
Windows PowerShell Transcript Start
Start time: 20151223165030
Username : DOMAIN\Username
Machine : WKSTNName (Microsoft Windows NT 6.1.7601 Service Pack 1)
**********************
Transcript started, output file is D:\DIR\LogFile2015-12-23.log
**********************
Windows PowerShell Transcript End
End time: 20151223165030
**********************
Может ли кто-нибудь сказать мне, что мне не хватает? Разве я не понимаю, как работает Start-Transcript
?
Если кто-то может мне помочь, все, что я пытаюсь сделать, это получить журнал ошибок в файл.
Обновленные попытки
Я попытался изменить его на:
Try{$TermRep = Import-Csv $Path\TestFileTerm.csv -verbose -EA stop}
Catch { Write "$DateTime Error: Import-Csv: $_" >>$Errorlog}
Если я устанавливаю для каждой команды значение try-catch
, она печатает ошибки в файл журнала, но больше не запускает функцию электронной почты об ошибках (второе электронное письмо), даже когда я пытаюсь импортировать несуществующий CSV. Вместо этого он запускает Else
в первом письме, что означает, что пользователи не были найдены.
Кроме того, предложение Мэтта при попытке распечатать ошибки в файле журнала, но заставляет его всегда отправлять электронное письмо с ошибкой (второе электронное письмо), даже если ошибки нет:
try{
Start-Transcript -Path c:\temp\text.txt
$TermRep = Import-Csv $Path\TestFileTerm2.csv
} catch {
$Error[0]
}
$ErrorActionPreference
? - person Matt   schedule 24.12.2015Try{$TermRep = Import-Csv $Path\TestFileTerm.csv -verbose -EA stop} Catch { Write "$DateTime Error: Import-Csv: $_" >>$Errorlog}
пока кто-нибудь не придумает лучший способ сделать это. - person Nate   schedule 24.12.2015Catch [system.exception]{
и отправляет электронное письмо с сообщением об ошибке. - person Nate   schedule 24.12.2015start-transcript
, а затем попробую поддельныйimport-csv
, я получу сообщение об ошибке, сообщающее, что его нельзя открыть/нет такого файла. - person Nate   schedule 24.12.2015Start-Process
? stackoverflow .com/questions/11531068/ - person Eris   schedule 24.12.2015if($job){}
и обнулите его в начале файла$job = $null
. Ваша проблема с расшифровкой решена уже реально. Теперь мы возвращаемся к вам прошлый вопрос о$job
- person Matt   schedule 24.12.2015