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

Windows Server 2022证书脚本DateTime转换与Write-Host参数错误求助

解决方案

1. 修复DateTime格式转换错误

在it-IT区域环境下,直接解析"27/02/2028 12:50"会因区域默认解析逻辑冲突失败,必须显式指定格式完成转换:

  • 使用.NET ParseExact方法(兼容性最强):
$dateString = "27/02/2028 12:50"
$format = "dd/MM/yyyy HH:mm"
$certExpiryDate = [DateTime]::ParseExact($dateString, $format, [System.Globalization.CultureInfo]::GetCultureInfo("it-IT"))
  • 或使用Get-Date带参数的写法:
$certExpiryDate = Get-Date -Date $dateString -Format $format -Culture "it-IT"

2. 解决PositionalParameterNotFound参数错误

该错误源于参数传递位置不明确,PowerShell无法识别无参数名的位置参数,修正规则如下:

  • 调用Get-Date时必须明确指定参数名,禁止省略参数名传递值:
# 错误写法:Get-Date "27/02/2028"
# 正确写法
Get-Date -Date "27/02/2028" -Format $format -Culture "it-IT"
# 输出当前日期指定格式
Get-Date -Format $format
  • 调用Write-Host时,若需传递格式类参数(如-ForegroundColor)必须写明参数名,普通字符串直接拼接即可:
# 正确示例:输出带颜色的到期提醒
Write-Host "证书即将到期!剩余天数:" $daysRemaining -ForegroundColor Yellow

3. 适配it-IT区域的完整脚本片段

$formatdata = "dd/MM/yyyy HH:mm"
$itCulture = [System.Globalization.CultureInfo]::GetCultureInfo("it-IT")

# 模拟从证书获取的到期时间字符串
$expiryStr = "27/02/2028 12:50"

try {
    # 安全解析日期
    $expiryDate = [DateTime]::ParseExact($expiryStr, $formatdata, $itCulture)
    # 计算剩余天数
    $daysLeft = ($expiryDate - (Get-Date)).Days
    Write-Host "证书到期时间:" $expiryDate.ToString($formatdata)
    Write-Host "距离到期还有 $daysLeft 天"
}
catch {
    Write-Host "日期解析失败:" $_ -ForegroundColor Red
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:55:14