[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 7930
  • Last Modified:

Powershell Script to get Outlook/Office Version and Service Pack Info on Our Domain

Hi  ,

I want to write a powershell script to know the MS Office Version and Service Pack Info on the desktop machine . We have about 4000 machines on our network.

The current script gives me only the version number :


foreach ($computer in (Get-Content ipaddress.txt)) {
  foreach ($computer ) {
  $version = 0
  $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer)

  $reg.OpenSubKey('software\Microsoft\Office').GetSubKeyNames() |% {
    if ($_ -match '(\d+)\.') {
      if ([int]$matches[1] -gt $version) {
        $version = $matches[1]
      }
    }    
  }
  if ($version) {
      "$computer : found $version"
    }
    else {
      "Could not find version for $computer"
  }
}


Any ideas ?
0
MOITExperts
Asked:
MOITExperts
1 Solution
 
AnuroopsunddCommented:
service pack information is in the version number... you have to detect which version means what.... see below for details of sp1 changes to version

http://support.microsoft.com/kb/928116/
0
 
MOITExpertsAuthor Commented:
Yep you are right but the issue i am having with the script above is i just get version numbers as 12,14,13 etc .

And that does not help me in finding the service pack info.

I am just doing a match using the registry and check the version ... i am not able to find the service pack info

Thanks
-Shreyas
0
 
slidingfoxCommented:
foreach ($computer in (Get-Content ipaddress.txt)) {

    $officever = ''
    $officesp = ''

    $reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('ClassesRoot', $computer)

    $reg = $reg.OpenSubKey('Word.Application\CurVer').GetValue('')
     
    if ($reg.EndsWith(11)) {
     
        $officever = 'Office 2003'
        $sp = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Office\11.0\Common\ProductVersion).LastProduct

        if ($sp -like '11.0.8*') {
            $officesp = 'Service Pack 3'
        } elseif ($sp -like '11.0.7*') {
            $officesp = 'Service Pack 2'
        } elseif ($sp -like '11.0.6*') {
            $officesp = 'Service Pack 1'
        } else {
            $officesp = 'No Service Pack'
        }        
       
     
    } elseif ($reg.EndsWith(12)) {
       
        $officever = 'Office 2007'
        $sp = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Office\12.0\Common\ProductVersion).LastProduct
       
        if ($sp -like '12.0.66*') {
            $officesp = 'Service Pack 3'
        } elseif ($sp -like '12.0.64*') {
            $officesp = 'Service Pack 2'
        } elseif ($sp -like '12.0.62*') {
            $officesp = 'Service Pack 1'
        } else {
            $officesp = 'No Service Pack'
        }
     
    } elseif ($reg.EndsWith(14)) {
   
        $officever = "Office 2010"
        $sp = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Office\14.0\Common\ProductVersion).LastProduct
     
        if ($sp -like '14.0.60*') {
            $officesp = 'Service Pack 1'
        } else {
            $officesp = 'No Service Pack'
        }  
     
    }
   
Write-Output "$officever $officesp"
     
}
0
 The Evil-ution of Network Security Threats

What are the hacks that forever changed the security industry? To answer that question, we created an exciting new eBook that takes you on a trip through hacking history. It explores the top hacks from the 80s to 2010s, why they mattered, and how the security industry responded.

 
slidingfoxCommented:
Apologies, forgot to add the computername to the output. Replace the Write-Output line with

"$computer - $officever $officesp"
0
 
MOITExpertsAuthor Commented:
Thank you for the script but this again helps me in retrieving the version but when i go through the loop where it checks for service pack i get an error

Get-ItemProperty : Cannot find path 'HKLM:\SOFTWARE\Microsoft\Office\14.0\Common\ProductVersion' because it does not ex
ist.
+  $sp = (Get-ItemProperty <<<<  HKLM:\SOFTWARE\Microsoft\Office\14.0\Common\ProductVersion).LastProduct
    + CategoryInfo          : ObjectNotFound: (HKLM:\SOFTWARE\...\ProductVersion:String) [Get-ItemProperty], ItemNotFo
   undException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

So i did open the registry and i did try to find the "Productversion" under /software/microsoft/common/

There was no file and hence it was not able to compare the string so everytime i get this error and output is returned as "Office 200x No Service Pack found "

Once Again Thank you for your help !!!
0
 
ericwoodfordCommented:
get-logonstatistics "mailbox"  | select  UserName, Clientversion 

Open in new window


Will tell what client version that they just logged on to their mailbox with.

Username  ClientVersion
Eric W             14.0.6109.5000

You can search Technet to get exactly what patch/hotfix this relates to.
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now