Hallo.
Ich habe folgendes Script. Dabei möchte ich sämtliche installierten Software eines Clients auslesen, zB der letzten 3 Monate.
Genau genommen, was wurde in den letzten 3 Monate installiert.
Wenn ich das Script wie unten laufen lasse, werden mir nur Windows Hotfixes angezeigt.
$items = import-csv F:\file.txt -Header servers foreach ($item in $items) { $server = $($item.servers) $hosts = resolve-dnsname $Server -ErrorAction SilentlyContinue | Select-Object -expand name invoke-command $hosts { $using:hosts $datepast = (Get-Date).AddMonths(-3) $datepast2 = (Get-Date).AddMonths(-3).ToString('yyyyddMM') $datenow = Get-Date $datenow2 = (Get-Date).ToString('yyyyddMM') Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |Where-Object {$_.installdate -gt "$datepast2" -AND $_.installdate -lt "$datenow2"} | select-object DisplayName,Publisher,DisplayVersion,InstallDate | ft -autosize Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.installdate -gt "$datepast2" -AND $_.installdate -lt "$datenow2"} | select DisplayName,Publisher,DisplayVersion,InstallDate| ft -autosize Get-WmiObject -class Win32_QuickFixEngineering | Where-Object {$_.installedon -gt $datepast -AND $_.installedon -lt $datenow} | select-object Description,HotFixID,InstalledOn | ft -autosize } >> "F:\((get-date).tostring("ddMMyyyy")).txt" }
Lasse ich jeweils den Teil mit
-AND $_.installdate -lt"$datenow2" ...
weg, bekomme ich zwar die letzten 3 Monate, plus alles aus dem aktuellen Jahr.
Sieht dann wie folgt aus:
$items = import-csv F:\file.txt -Header servers foreach ($item in $items) { $server = $($item.servers) $hosts = resolve-dnsname $Server -ErrorAction SilentlyContinue | Select-Object -expand name invoke-command $hosts { $using:hosts $datepast = (Get-Date).AddMonths(-3) $datepast2 = (Get-Date).AddMonths(-3).ToString('yyyyddMM') $datenow = Get-Date $datenow2 = (Get-Date).ToString('yyyyddMM') Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |Where-Object {$_.installdate -gt "$datepast2"} | select-object DisplayName,Publisher,DisplayVersion,InstallDate | ft -autosize Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.installdate -gt "$datepast2"} | select DisplayName,Publisher,DisplayVersion,InstallDate| ft -autosize Get-WmiObject -class Win32_QuickFixEngineering | Where-Object {$_.installedon -gt $datepast} | select-object Description,HotFixID,InstalledOn | ft -autosize } >> "F:\((get-date).tostring("ddMMyyyy")).txt" }
Jemand eine Idee warum die Angabe der Zeitspanne -gt -AND -lt keine korrekten Werte liefert?