You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PowerShell中Get-Date cmdlet的默认返回值

如何让Get-Date默认返回年份属性?

Get-Date默认输出的是DateTime类型对象,控制台显示的“26 July 2023 12:54:21”是该类型的默认格式化字符串。要让Get-Date直接返回.Year属性值,而不是原DateTime对象,可行的方案是自定义包装函数覆盖原命令:

实现方式

创建一个同名函数Get-Date,内部调用原生命令并返回年份属性:

function Get-Date {
    [CmdletBinding()]
    param(
        # 保留原Get-Date的所有参数,确保功能完整
        [Parameter(ParameterSetName='Date')]
        [datetime]$Date,
        [Parameter(ParameterSetName='Date')]
        [switch]$Year,
        [Parameter(ParameterSetName='Date')]
        [switch]$Month,
        [Parameter(ParameterSetName='Date')]
        [switch]$Day,
        [Parameter(ParameterSetName='Date')]
        [switch]$Hour,
        [Parameter(ParameterSetName='Date')]
        [switch]$Minute,
        [Parameter(ParameterSetName='Date')]
        [switch]$Second,
        [Parameter(ParameterSetName='Date')]
        [switch]$Millisecond,
        [Parameter(ParameterSetName='UFormat')]
        [string]$UFormat,
        [Parameter(ParameterSetName='Format')]
        [string]$Format,
        [Parameter()]
        [switch]$DisplayHint,
        [Parameter()]
        [System.TimeZoneInfo]$TimeZone,
        [Parameter()]
        [switch]$Utc
    )
    # 调用原生Get-Date命令,传递所有参数避免功能缺失
    $originalDate = Microsoft.PowerShell.Utility\Get-Date @PSBoundParameters
    # 返回年份属性
    $originalDate.Year
}

说明

  • 用限定名Microsoft.PowerShell.Utility\Get-Date调用原生命令,避免函数递归调用自身。
  • 保留原命令的所有参数,确保你依然能使用Get-Date的其他功能(比如指定日期、时区等),最终返回的都是对应日期的年份。
  • 这种方式直接改变了命令的返回值类型(从DateTime变为Int32),无需额外写(Get-Date).Year即可直接获取年份。

为什么Update-TypeData不行?

Update-TypeData仅修改对象的格式化规则,也就是对象在控制台默认展示或通过Format-List/Table/Wide输出时的显示样式,但不会改变命令返回的对象本身。原生Get-Date始终返回DateTime对象,所以Update-TypeData无法让它直接返回年份值。

内容的提问来源于stack exchange,提问作者ZEE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 10:26:01