use Win32::OLE qw (in); $strComputer = "."; #connect to WMI my $WMIProcesses = Win32::OLE->GetObject("winmgmts://$strComputer") || die; print "****************** Computer Info *************************\n"; my $ComputerSystemCollection = $WMIProcesses->InstancesOf("Win32_ComputerSystem" ); if (Win32::OLE->LastError() != 0) { print Win32::OLE->LastError()."\n"; } foreach $ComputerSystemz (in $ComputerSystemCollection) { print $ComputerSystemz->{Name}." "; print $ComputerSystemz->{UserName}."\n"; print $ComputerSystemz->{Manufacturer}." : "; print $ComputerSystemz->{Model}." : "; print $ComputerSystemz->{Description}."\n"; } print "_________________________________________________________\n\n"; print "\n\n\n"; print "******************** Start Up Commands ******************\n\n"; my $StartupCommandCollection = $WMIProcesses->InstancesOf("Win32_StartupCommand" ); if (Win32::OLE->LastError() != 0) { print Win32::OLE->LastError()."\n"; } foreach $StartupCommandz (in $StartupCommandCollection) { print $StartupCommandz->{Name}." "; print $StartupCommandz->{Command}."\n"; print $StartupCommandz->{User}." : "; print $StartupCommandz->{UserSID}." : "; print $StartupCommandz->{Location}."\n"; print " ----\n"; } print "_________________________________________________________\n\n"; print "\n\n\n"; print "********************* List Processes ********************\n\n"; my $ProcessCollection = $WMIProcesses->InstancesOf("Win32_PRocess" ); if (Win32::OLE->LastError() != 0) { print Win32::OLE->LastError()."\n"; } foreach $Processz (in $ProcessCollection) { print $Processz->{ProcessID}." : "; print $Processz->{Name}." : "; print $Processz->{ExecutablePath}."\n"; } print "_________________________________________________________\n\n"; print "\n\n\n"; print "********************* List Services ********************\n\n"; my $ServiceCollection = $WMIProcesses->InstancesOf("win32_service" ); if (Win32::OLE->LastError() != 0) { print Win32::OLE->LastError()."\n"; } foreach $drive (in $ServiceCollection) { print $drive->{PathName}."\n"; } print "_________________________________________________________\n\n"; print "\n\n\n"; print "****************** All Windows Patches ******************\n\n"; my $QuickFixEngineeringCollection = $WMIProcesses->InstancesOf("Win32_QuickFixEngineering" ); if (Win32::OLE->LastError() != 0) { print Win32::OLE->LastError()."\n"; } foreach $QuickFixEngineeringz (in $QuickFixEngineeringCollection) { print $QuickFixEngineeringz->{HotFixID}." "; print $QuickFixEngineeringz->{Description}." "; print $QuickFixEngineeringz->{InstalledBy}." "; print $QuickFixEngineeringz->{InstallDate}."\n"; } print "_________________________________________________________\n\n"; print "\n\n\n";