我正在尝试从给定日期获取有关通过SCCM v12在Windows Server 2003和2008服务器上安装哪些Windows更新的信息。为此,我使用的是PowerShell的Get-Hotfix
cmdlet。
但是我遇到了一个问题,我现在要解释一下:
Get-HotFix -ComputerName SERVER01 | where-object {$_.hotfixid -ne "file 1"} | Select description,hotfixid,installedby,InstalledOn | sort installedon
返回修补程序,但日期不多。我知道这是一个问题,所以要解决这个问题,你需要像这样运行它:
Get-HotFix -ComputerName SERVER01 | where-object {$_.hotfixid -ne "file 1"} | Select description,hotfixid,installedby,@{l="InstalledOn";e={[DateTime]::Parse($_.psbase.properties["installedon"].value,$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}} | sort installedon
然后返回大多数日期....但不是全部。接下来我想要从某个特定日期安装更新,所以我运行它来做到这一点。
$date = Get-Date '26/07/2013'
Get-HotFix -ComputerName SERVER01 | where-object {$_.hotfixid -ne "file 1"} | where "InstalledOn" -gt $date | Select description,hotfixid,installedby,@{l="InstalledOn";e={[DateTime]::Parse($_.psbase.properties["installedon"].value,$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}} | sort installedon
但是这不会返回任何更新或错误。但是我知道自从这个日期以来已经应用了更新,因为我在第二个命令结果中看到它们。
所以问题是我做错了吗?还有通过SCCM的另一种方式吗?
答案 0 :(得分:0)
Get-HotFix -ComputerName SERVER01 | where-object {$_.hotfixid -ne "file 1"} | Select description,hotfixid,installedby,@{l="InstalledOn";e={[DateTime]::Parse($_.psbase.properties["installedon"].value,$([System.Globalization.CultureInfo]::GetCultureInfo("en-US")))}} | where-object {$_.installedon –gt $date} | sort installedon -descending
答案 1 :(得分:0)
我认为你可能会让事情变得复杂:
get-hotfix | Where-Object {$_.installedon -gt (get-date).addmonths(-2)} | Sort-Object -property installedon -Descending