Upload files to "/"
This commit is contained in:
@@ -0,0 +1,82 @@
|
|||||||
|
#requires -version 4.0
|
||||||
|
#requires -runasadministrator
|
||||||
|
|
||||||
|
#Retrieving all events with ID 100
|
||||||
|
|
||||||
|
$BootEvents = Get-WinEvent -FilterHashtable @{
|
||||||
|
logname='Microsoft-Windows-Diagnostics-Performance/Operational';
|
||||||
|
id=100}
|
||||||
|
|
||||||
|
#Building a boot history with, for each boot, the duration of the boot process
|
||||||
|
|
||||||
|
$BootHistory = $BootEvents | Select-Object TimeCreated, LevelDisplayName,
|
||||||
|
@{
|
||||||
|
n="BootStartTime";
|
||||||
|
e={Get-Date -Date (([xml]$_.ToXml()).Event.EventData.Data |
|
||||||
|
Where-Object {$_.name -eq "BootStartTime"})."#text"}
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
n="BootEndTime";
|
||||||
|
e={Get-Date -Date (([xml]$_.ToXml()).Event.EventData.Data |
|
||||||
|
Where-Object {$_.name -eq "BootEndTime"})."#text"}
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
n="MainPathBootTime";
|
||||||
|
e={([timespan]::FromMilliseconds((([xml]$_.ToXml()).Event.EventData.Data |
|
||||||
|
Where-Object {$_.name -eq "MainPathBootTime"})."#text"))}
|
||||||
|
},
|
||||||
|
@{
|
||||||
|
n="BootPostBootTime";
|
||||||
|
e={([timespan]::FromMilliseconds((([xml]$_.ToXml()).Event.EventData.Data |
|
||||||
|
Where-Object {$_.name -eq "BootPostBootTime"})."#text"))}
|
||||||
|
}
|
||||||
|
|
||||||
|
$BootStartTime = $BootHistory.bootstarttime
|
||||||
|
|
||||||
|
$MainPathBootTime = $BootHistory.MainPathBootTime
|
||||||
|
|
||||||
|
$PostBootTime = $BootHistory.BootPostBootTime
|
||||||
|
|
||||||
|
$LastBootDate = $BootStartTime | Select-Object -First 1
|
||||||
|
|
||||||
|
$OldestRecordedBoot = $BootStartTime | Select-Object -last 1
|
||||||
|
|
||||||
|
$BootFrequencyInDays = ($LastBootDate - $OldestRecordedBoot).days / $BootStartTime.Count
|
||||||
|
|
||||||
|
$AvgMainBootDuration = [timespan]::FromSeconds((($MainPathBootTime.totalseconds |
|
||||||
|
Measure -A).average)).ToString("hh\:mm\:ss")
|
||||||
|
|
||||||
|
$AvgPostBootDuration = [timespan]::FromSeconds((($PostBootTime.totalseconds |
|
||||||
|
Measure -A).average)).ToString("hh\:mm\:ss")
|
||||||
|
|
||||||
|
$ActualWindowsBootTime = (Get-Date) - `
|
||||||
|
([timespan]::FromMilliseconds([Math]::Abs([Environment]::TickCount)))
|
||||||
|
|
||||||
|
$LastEvent12 = Get-WinEvent -FilterHashtable @{
|
||||||
|
LogName='System';
|
||||||
|
ProviderName='Microsoft-Windows-Kernel-General';
|
||||||
|
ID=12} -MaxEvents 1 | Select -ExpandProperty TimeCreated
|
||||||
|
|
||||||
|
|
||||||
|
#Building an object containing a quick summary of your last computer boot, as
|
||||||
|
#well as of the average boot duration.
|
||||||
|
|
||||||
|
$BootInformation = 1 | Select-Object BootFrequencyInDays, AvgMainBootDuration, `
|
||||||
|
AvgPostBootDuration, LastBootDate, OldestRecordedBoot, `
|
||||||
|
ActualWindowsBootTime, LastEvent12
|
||||||
|
$BootInformation.BootFrequencyInDays = $BootFrequencyInDays
|
||||||
|
$BootInformation.AvgMainBootDuration = $AvgMainBootDuration
|
||||||
|
$BootInformation.AvgPostBootDuration = $AvgPostBootDuration
|
||||||
|
$BootInformation.LastBootDate = $LastBootDate
|
||||||
|
$BootInformation.OldestRecordedBoot = $OldestRecordedBoot
|
||||||
|
$BootInformation.ActualWindowsBootTime = $ActualWindowsBootTime
|
||||||
|
$BootInformation.LastEvent12 = $LastEvent12
|
||||||
|
|
||||||
|
#Grouping boot events by Level, in order to see if your computer boot duration is below or
|
||||||
|
#beyond the thresholds defined in the Registry
|
||||||
|
$BootAnalysis = Get-WinEvent -FilterHashtable @{
|
||||||
|
logname='Microsoft-Windows-Diagnostics-Performance/Operational';
|
||||||
|
id=100} |
|
||||||
|
Group-Object LevelDisplayName
|
||||||
|
|
||||||
|
$BootHistory | Out-Gridview
|
||||||
Reference in New Issue
Block a user