【发布时间】:2019-09-14 17:00:15
【问题描述】:
我将所有已安装的软件安装到我的计算机上,并将结果打印到 HTML 表格中。但是很多日期都有yyyyMMdd格式,但我想要yyyy-MM-dd格式。
Windows 10
Powershell 版本 - 5.1.17
$Soft = Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*;
#$Soft64 = Get-ItemProperty HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*;
$InstallDate = $Soft | Select-Object InstallDate;
for ($i = 0; $i -lt $InstallDate.Length; $i++) {
if ($InstallDate[$i] -match '-') {
$InstallDate[$i]
} else {
$InstallDate = [DateTime]::ParseExact($InstallDate[$i], 'yyyyMMdd', $null)
$InstallDate.ToString('yyyy-MM-dd')
}
}
列表中的一个日期具有良好的格式 (2019-04-01) 或者它们为空/null,执行脚本后我得到以下结果:
但是不包含-的日期,例如20190319,抛出错误:
【问题讨论】:
-
使用:
$InstallDate = $Soft | Select-Object -ExpandProperty InstallDate; -
之后我得到
Select-Object : Property "InstallDate" cannot be found. -
是的,但仅适用于属性不存在的对象。无论如何,您将无法解析它们。你的
$installDate变量应该有一个字符串列表,其中属性 did 存在 -
好的,但它只打印日期,格式为 yyyy-MM-dd。安装日期为空的对象很少,但是yyyyMMdd格式的对象,它们不打印。
标签: powershell