惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
罗磊的独立博客
J
Java Code Geeks
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
U
Unit 42
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - Franky
Jina AI
Jina AI
F
Fortinet All Blogs
H
Help Net Security
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Last Week in AI
Last Week in AI
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
C
Check Point Blog
GbyAI
GbyAI

博客园 - 努力学习的小熊

SharePoint - Another Way to Delete Site Collection Exchange - Add Owner of Distribution Group Exchange Online Mailbox Restoration OUTLOOK - Unable to Delete Meetings Outlook Error: The Delegates settings were not saved correctly. Cannot activate send-on-behalf-of list. Office365 OneDrive Geo Move SharePoint Excel Service - Couldn't Open the Workbook. User Get 'Access Denied' with Excel Service WebPart How To Search and Restore files from Site Collection Recycle Bin How To Collect ULS Log from SharePoint Farm How To Restart timer service on all servers in farm How to Operate SharePoint User Alerts with PowerShell Synchronization Service Manager SharePoint 2007 Full Text Searching PowerShell and CS file content with SharePoint Search 0x80040E14 Caused by Max Url Length bug SharePoint 2007 User Re-created in AD with new SID issue on MySite SharePoint 2007 Prompt for Credentials When Accessing FQDN Sites From a Windows Vista or Windows 7 Computer SharePoint 2010 找回丢失的Social Collaboration Web Parts SharePoint 客户端经常弹出Windows验证登录框问题
How to get Timer Job History
努力学习的小熊 · 2015-11-12 · via 博客园 - 努力学习的小熊

2015-11-12 10:11  努力学习的小熊  阅读(531)  评论()    收藏  举报

1. Get Timer Job internal name with id.

Job ID can be found in SharePoint CA.

Below PowerShell can help you retrieve all jobs’ Internal Name by keywords.

Get-SPTimerJob | Sort-Object name | where {$_.Name -like "*Profile*"} | ft id,name

 

2. Using script in attachment, you can get the history of specific Timer Job

 

The result will be like this.

 

PowerShell

$LogTime = Get-Date -Format yyyy-MM-dd_hh-mm   
$LogFile = ".\TimerJobReportPatch-$LogTime.rtf"   
# Add SharePoint PowerShell Snapin   
   
if ( (Get-PSSnapin -Name Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue) -eq $null ) {   
    Add-PSSnapin Microsoft.SharePoint.Powershell   
}   
$scriptBase = split-path $SCRIPT:MyInvocation.MyCommand.Path -parent   
Set-Location $scriptBase   
#Deleting any .rtf files in the scriptbase location   
$FindRTFFile = Get-ChildItem $scriptBase\*.* -include *.rtf   
if($FindRTFFile)   
{   
    foreach($file in $FindRTFFile)   
        {   
            remove-item $file   
        }   
}   
start-transcript $logfile   
Function TimerJobReport()   
{   
    $Output = $scriptBase + "\" + "TimerJobReport.csv";   
"Name" + "," + "Status" + ","  + "LastRun" + "," + "Schedule"  | Out-File -Encoding Default -FilePath $Output;   
    write-host "Generating TimerJob generic report" -fore yellow   
    $TimerJobs = get-sptimerjob   
    foreach($TimerJob in $Timerjobs)   
    {   
$TimerJob.name + "," + $TimerJob.status + "," + $TimerJob.lastruntime + "," + $TimerJob.schedule  | Out-File -Encoding Default  -Append -FilePath $Output;   
    }   
    write-host "TimerJob genric report collected and placed under " $Output -fore green   
}   
   
Function TimerJobHistory()   
{   
    $Output1 = $scriptBase + "\" + "TimerJobHistoryReport.csv";   
"Name" + "," + "Status" + ","  + "ServerName" + "," + "WebApplicationName" + "," + "ErrorMessage"  | Out-File -Encoding Default -FilePath $Output1;   
    write-host "Generating TimerJob history report" -fore yellow   
    $TimerJobs = get-sptimerjob   
    foreach($TimerJob in $Timerjobs)   
    {   
        $JobHistories = $TimerJob.historyentries   
        foreach($Jobhistory in $JobHistories)   
        {   
            if($TimerJob.lastruntime.ToUniversalTime() -eq $JobHistory.starttime)   
            {   
$TimerJob.Name + "," + $Jobhistory.status + "," + $Jobhistory.servername + "," + $Jobhistory.WebApplicationName + "," + $Jobhistory.ErrorMessage | Out-File -Encoding Default  -Append -FilePath $Output1;   
            }   
        }   
    }   
    write-host "TimerJob history report generated and placed under " $output1 -fore green   
}   
   
Function SpecificTimerJob()   
{   
    $Output2 = $scriptBase + "\" + "SpecificTimerJobHistoryReport.csv";   
"Name" + "," + "Status" + ","  + "ServerName" + "," + "TimerJobStartTime" + "," + "WebApplicationName" + "," + "ErrorMessage"  | Out-File -Encoding Default -FilePath $Output2;   
    $TimerJobName = read-host "Enter the timer job name "   
    $Timerjob = get-sptimerjob -identity $TimerJobName   
    $jobHistories = @($timerjob.historyentries)    
$HowManyHistory = read-host "Please enter the number of histories that you want to return for this timerjob "   
    for($i = 0 ; $i -le $HowManyHistory; $i++)   
    {   
$TimerJob.Name + "," + $jobHistories[$i].status + "," + $jobHistories[$i].servername + "," + $jobHistories[$i].StartTime + "," + $jobHistories[$i].WebApplicationName + "," + $jobHistories[$i].ErrorMessage | Out-File -Encoding Default  -Append -FilePath $Output2;   
    }      
    break;   
}   
write-host "########################################################################################################" -fore cyan   
write-host "Enter 1 to get SP Timer job generic reports" -fore green   
write-host "Enter 2 to get specific SP Timer job report " -fore green   
write-host "########################################################################################################" -fore cyan   
$option = read-host "Enter the option "   
switch($option)   
{   
    1{   
        TimerJobReport   
        TimerJobHistory        
     }   
   
    2{   
        SpecificTimerJob   
     }   
}   
write-host "SCRIPT COMPLETED" -fore green   
stop-transcript