/
githubmirror
/
PowerShell
Обзор
Документация
Войти
/
githubmirror
/
PowerShell
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/Microsoft.PowerShell.Commands.Utility/commands/utility/GetUptime.cs
68 строк
3 KB
Jonathan Gilbert
Correct handling of explicit -Since:$false parameter value in Get-Uptime (#26141)
09 окт 2025, 13:48
Не верифицирован
09 окт 2025, 13:48
e562d3f
Код
Авторство
О чём код?
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using System; using System.Diagnostics; using System.Management.Automation; using System.Management.Automation.Internal; namespace Microsoft.PowerShell.Commands { /// <summary> /// This class implements Get-Uptime. /// </summary> [Cmdlet(VerbsCommon.Get, "Uptime", DefaultParameterSetName = TimespanParameterSet, HelpUri = "https://go.microsoft.com/fwlink/?linkid=834862")] [OutputType(typeof(TimeSpan), ParameterSetName = new string[] { TimespanParameterSet })] [OutputType(typeof(DateTime), ParameterSetName = new string[] { SinceParameterSet })] public class GetUptimeCommand : PSCmdlet { /// <summary> /// The system startup time. /// </summary> /// <value></value> [Parameter(ParameterSetName = SinceParameterSet)] public SwitchParameter Since { get; set; } = new SwitchParameter(); /// <summary> /// This is the main entry point for the cmdlet. /// </summary> protected override void ProcessRecord() { // Get-Uptime throw if IsHighResolution = false // because stopwatch.GetTimestamp() return DateTime.UtcNow.Ticks // instead of ticks from system startup. // InternalTestHooks.StopwatchIsNotHighResolution is used as test hook. if (Stopwatch.IsHighResolution && !InternalTestHooks.StopwatchIsNotHighResolution) { TimeSpan uptime = TimeSpan.FromSeconds(Stopwatch.GetTimestamp() / Stopwatch.Frequency); if (Since) { // Output the time of the last system boot. WriteObject(DateTime.Now.Subtract(uptime)); } else { // Output the time elapsed since the last system boot. WriteObject(uptime); } } else { WriteDebug("System.Diagnostics.Stopwatch.IsHighResolution returns 'False'."); Exception exc = new NotSupportedException(GetUptimeStrings.GetUptimePlatformIsNotSupported); ThrowTerminatingError(new ErrorRecord(exc, "GetUptimePlatformIsNotSupported", ErrorCategory.NotImplemented, null)); } } /// <summary> /// Parameter set name for Timespan OutputType. /// </summary> private const string TimespanParameterSet = "Timespan"; /// <summary> /// Parameter set name for DateTime OutputType. /// </summary> private const string SinceParameterSet = "Since"; } }