获取Windows更新信息

问题描述 投票:0回答:1

我正在尝试收集有关网络上每台计算机的一些详细信息。我想提取 Windows 更新信息并查看它们是否在最多 30 天内发布,这就是我设法拼凑的信息。我知道它们单独工作,但当我把它们放在一起时就不行了。

希望有人能告诉我我做错了什么;

$WUpdateResult = (Get-Hotfix | Sort-Object -Property InstalledOn -Descending | Select-Object -First 1).InstalledOn
$WUR30Days = $WUpdateResult -lt 30
$info.WUpdateResult = if ($WUR30Days = "False") { $WUpdateResult } else { "N/A" }
windows powershell security patch
1个回答
0
投票

这里有几个潜在的问题:

与今天的日期比较

InstalledOn
属性为您提供安装更新的日期,但您不会将其与今天的日期进行比较。也许这就是你想要的:

$($(Get-Date) - $WUpdateResult).Days -lt 30

If 表达式

此外

$WUR30Days = "False"
只需将值“False”分配给变量
WUR30Days
- 试试这个:

$WUR30Days -eq $false

if 表达式中赋值运算符 (
=
) 代替 (
-eq
) 的示例

此片段显示了单个等号在

if
表达式中使用时如何令人困惑:

$ThisIsDefinitelyFalse = $(get-date).Day -gt 100

Write-Host $ThisIsDefinitelyFalse
Write-Host $ThisIsDefinitelyFalse.GetType()

if ($ThisIsDefinitelyFalse = "False") {
    Write-Host "WTF?!"
}
if ($ThisIsDefinitelyFalse = "True") {
    Write-Host "WTF?!?!"
}

Write-Host $ThisIsDefinitelyFalse
Write-Host $ThisIsDefinitelyFalse.GetType()

输出为:

False
System.Boolean
WTF?!
WTF?!?!
True
System.String

因为

if
语句内的表达式返回它们已成功分配变量的事实。您还可以看到该变量以前是布尔值,现在已更改为字符串。
if
中的这个表达式更新了变量的值:

$ThisIsDefinitelyFalse = "True"
© www.soinside.com 2019 - 2024. All rights reserved.