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

PowerShell 7.2.4中字符串转DateTime对象报错如何解决

问题根因

PowerShell 7重构了Web响应头的返回逻辑:所有响应头字段的值统一以System.String[]字符串数组类型存储,即使对应头只有1个有效值,也会被包装为单元素数组返回。这和PowerShell 5直接返回单个字符串的行为存在差异,直接将数组强转为DateTime类型自然会触发类型不匹配错误。

修复方案

HTTP协议规定Last-Modified响应头只会返回单个时间值,只要先从数组中取出第一个元素,再执行类型转换即可正常运行:

$result = Invoke-WebRequest -Method HEAD -Uri "https://microsoft.com" -UseBasicParsing -ErrorAction:Stop -TimeoutSec 30
$LastModifiedDateTime = [DateTime] $result.Headers['Last-Modified'][0]

跨PowerShell版本兼容写法

如果需要同一段代码同时适配PowerShell 5和PowerShell 7环境,可以先判断响应头返回值的类型,再做取值转换,避免版本差异导致的报错:

$result = Invoke-WebRequest -Method HEAD -Uri "https://microsoft.com" -UseBasicParsing -ErrorAction:Stop -TimeoutSec 30
$headerValue = $result.Headers['Last-Modified']
# 兼容单字符串、字符串数组两种返回格式
$lastModifiedStr = $headerValue -is [array] ? $headerValue[0] : $headerValue
$LastModifiedDateTime = [DateTime] $lastModifiedStr

上述写法会自动适配不同操作系统、不同系统语言返回的日期格式(包括GMT标准格式、各语种本地化日期格式),不需要额外指定日期解析规则,转换逻辑和PowerShell 5环境下的表现完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:57:16