Public/Get-SystemUptime.ps1

function Get-SystemUptime {
    <#
    .SYNOPSIS
        Возвращает время работы ОС.
    .DESCRIPTION
        Возвращает время работы ОС с последней перезагрузки или дату загрузки.
    .EXAMPLE
        PS C:\> Get-SystemUptime -Since
 
        4 июня 2021 г. 17:37:15
 
        Возвращает дату и время, когда была загружена ОС.
    .EXAMPLE
        PS C:\> Get-SystemUptime
 
        Ticks : 14003470000000
        Days : 16
        Hours : 4
        Milliseconds : 0
        Minutes : 59
        Seconds : 7
        TotalDays : 16,2077199074074
        TotalHours : 388,985277777778
        TotalMilliseconds : 1400347000
        TotalMinutes : 23339,1166666667
        TotalSeconds : 1400347
 
        Возвращает Timestamp? показывающий время работы ОС.
    .OUTPUTS
        Время работы ОС с момента загрузки.
    .NOTES
        Функция повторяет функционал командлета Get-Uptime, доступного в PowerShell 7.
    #>

    [CmdletBinding()]
    [OutputType([System.DateTime])]
    [OutputType([System.TimeSpan])]
    param (
        [Parameter(Mandatory = $false, ValueFromPipeline = $false, Position = 0)]
        [switch]
        $Since
    )

    begin {

    }

    process {
        if ($PSVersionTable.PSEdition -eq 'Desktop') {
            if ($Since) {
                $Result = (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime
            }
            else {
                $Result = (Get-Date) - (Get-CimInstance -ClassName Win32_OperatingSystem).LastBootUpTime
            }
        }
        else {
            if ($Since) {
                $Result = Get-Uptime -Since
            }
            else {
                $Result = Get-Uptime
            }
        }
    }

    end {
        return $Result
    }
}