Title: `Get-Uptime -Since` ignores an explicit `$false` value · Issue #25015 · PowerShell/PowerShell · GitHub
Open Graph Title: `Get-Uptime -Since` ignores an explicit `$false` value · Issue #25015 · PowerShell/PowerShell
X Title: `Get-Uptime -Since` ignores an explicit `$false` value · Issue #25015 · PowerShell/PowerShell
Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerShell 5.1 and PowerShell. Steps to reprodu...
Open Graph Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
X Description: Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh...
Opengraph URL: https://github.com/PowerShell/PowerShell/issues/25015
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"`Get-Uptime -Since` ignores an explicit `$false` value","articleBody":"### Prerequisites\n\n- [x] Write a descriptive title.\n- [x] Make sure you are able to repro it on the [latest released version](https://github.com/PowerShell/PowerShell/releases)\n- [x] Search the existing issues.\n- [x] Refer to the [FAQ](https://github.com/PowerShell/PowerShell/blob/master/docs/FAQ.md).\n- [x] Refer to [Differences between Windows PowerShell 5.1 and PowerShell](https://learn.microsoft.com/powershell/scripting/whats-new/differences-from-windows-powershell).\n\n### Steps to reproduce\n\n```powershell\n(Get-Uptime).GetType().Name # TimeSpan\n(Get-Uptime -Since).GetType().Name # DateTime\n(Get-Uptime -Since:$false).GetType().Name # DateTime, should be TimeSpan\n```\n\n### Expected behavior\n\n```powershell\n# TimeSpan\n# DateTime\n# TimeSpan\n```\n\n### Actual behavior\n\n```powershell\n# TimeSpan\n# DateTime\n# DateTime\n```\n\n### Context\n\n- `Get-Uptime` emits a `[timespan]` object by default or `[datetime]` with `-Since`.\n- If `-Since` is explicitly provided a `$false` value (`-Since:$false`/hash table splatting), the type is unexpectedly `[datetime]`.\n - `-Since`/`-Since:$true` and `-Since:$false` **result in identical behavior**.\n- `Get-Uptime` uses the selected parameter set to determine output type, which is tied to the **_presence_** of the `-Since` switch, **_not_** its **_value_**.\n\nhttps://github.com/PowerShell/PowerShell/blob/df248bd7828883f48a72708e82e1f159724bcc34/src/Microsoft.PowerShell.Commands.Utility/commands/utility/GetUptime.cs#L39-L49\n\nDespite it being uncommon to specify an explicit `$false` switch (and arguably against its intention), I believe the current `Get-Uptime` behavior still amounts to a bug.\n\n- Specifying `$false` is permitted by the language and the `Get-Uptime` result subverts reasonable user expectation.\n- There are valid use cases for this (e.g., dynamically retrieving the boolean from another source).\n- Other cmdlets with parameter sets tied to a switch respect an explicit `$false` value (e.g., `'foo' | Select-String f -Raw:$false`)\n\n```powershell\n# Simulate dynamic retrieval of the boolean.\n$getDateTimeOutput = $false\n\nGet-Uptime -Since:$getDateTimeOutput\n# Or...\n$params = @{ Since = $getDateTimeOutput }\nGet-Uptime @params\n\n# Get-Uptime still unexpectedly emits [datetime] output.\n\n```\n\n### Environment data\n\n```powershell\nName Value\n---- -----\nPSVersion 7.6.0-preview.2\nPSEdition Core\nGitCommitId 7.6.0-preview.2\nOS Microsoft Windows 10.0.19045\nPlatform Win32NT\nPSCompatibleVersions {1.0, 2.0, 3.0, 4.0, 5.0, 5.1…}\nPSRemotingProtocolVersion 2.3\nSerializationVersion 1.1.0.1\nWSManStackVersion 3.0\n```","author":{"url":"https://github.com/surfingoldelephant","@type":"Person","name":"surfingoldelephant"},"datePublished":"2025-02-14T10:05:34.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":16},"url":"https://github.com/25015/PowerShell/issues/25015"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:3f688802-0a85-dd2b-8766-ae07f89b0301 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 888E:18EF1B:3672D24:4AB5621:6A4F33EC |
| html-safe-nonce | 15b667123fab6adadbc9324b4bf24de86352d5e9aa95b9f7b570da02756965e2 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4ODhFOjE4RUYxQjozNjcyRDI0OjRBQjU2MjE6NkE0RjMzRUMiLCJ2aXNpdG9yX2lkIjoiMzExNDk4MjY4ODg0ODU1NzAzNiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 55b3f574f6feb8cab12c6cc0160e43d4ec081c0ffe4949c5941c409f613bcc4e |
| hovercard-subject-tag | issue:2853227157 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/PowerShell/PowerShell/25015/issue_layout |
| twitter:image | https://opengraph.githubassets.com/cdbb374f496466b643876b28efb90dabf12afdefbfe57703c6f0f065e8443042/PowerShell/PowerShell/issues/25015 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/cdbb374f496466b643876b28efb90dabf12afdefbfe57703c6f0f065e8443042/PowerShell/PowerShell/issues/25015 |
| og:image:alt | Prerequisites Write a descriptive title. Make sure you are able to repro it on the latest released version Search the existing issues. Refer to the FAQ. Refer to Differences between Windows PowerSh... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | surfingoldelephant |
| hostname | github.com |
| expected-hostname | github.com |
| None | b92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9 |
| turbo-cache-control | no-preview |
| go-import | github.com/PowerShell/PowerShell git https://github.com/PowerShell/PowerShell.git |
| octolytics-dimension-user_id | 11524380 |
| octolytics-dimension-user_login | PowerShell |
| octolytics-dimension-repository_id | 49609581 |
| octolytics-dimension-repository_nwo | PowerShell/PowerShell |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 49609581 |
| octolytics-dimension-repository_network_root_nwo | PowerShell/PowerShell |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 2b8f23afb982271f1b22258a94aede67a6b77760 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width