Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Installierte Software auslesen (Zeitspanne funktioniert nicht)

$
0
0

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?



Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>