diff --git a/software.ps1 b/software.ps1 new file mode 100644 index 0000000..33afcf6 --- /dev/null +++ b/software.ps1 @@ -0,0 +1,45 @@ +$allComputers=Get-Content -Path C:\temp\pctest.txt +foreach($computer in $allComputers) +{ + +$isonline=test-connection -Quiet -count 2 -ComputerName $computer +if($isonline) +{ +Write-Host -ForegroundColor Green "$computer is online"; + +$output=@() +$remotereg=0 +if ($service=Invoke-Command -ComputerName $computer -ScriptBlock {Get-Service -Name RemoteRegistry} +{ + Get-Service -ComputerName $computer -Name RemoteRegistry | Start-Service + $remotereg=1 + Write-Host -ForegroundColor Green "$computer remote registry started"; +} +$InstalledSoftwareKey="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" +$InstalledSoftware=[microsoft.win32.registrykey]::OpenRemoteBaseKey('LocalMachine', $computer) +$RegistryKey=$InstalledSoftware.OpenSubKey($InstalledSoftwareKey) +$SubKeys=$RegistryKey.GetSubKeyNames() +Foreach ($key in $SubKeys){ +$thisKey=$InstalledSoftwareKey+"\\"+$key +$thisSubKey=$InstalledSoftware.OpenSubKey($thisKey) +$obj = New-Object PSObject +$obj | Add-Member -MemberType NoteProperty -Name "ComputerName" -Value $computer +$obj | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $($thisSubKey.GetValue("DisplayName")) +$obj | Add-Member -MemberType NoteProperty -Name "DisplayVersion" -Value $($thisSubKey.GetValue("DisplayVersion")) +$obj | Add-Member -MemberType NoteProperty -Name "InstallDate" -Value $($thisSubKey.GetValue("InstallDate")) +$output += $obj +} +$output | where { $_.DisplayName } | select ComputerName, DisplayName, DisplayVersion, InstallDate | FT +$output=@() +if ($remotereg=1) +{ + Get-Service -ComputerName $computer -Name RemoteRegistry | Stop-Service + Write-Host -ForegroundColor Green "$computer remote registry stopped"; +} +} +else +{ +Write-Host -ForegroundColor Red "`n$computer is offline `n"; +} + +} \ No newline at end of file