zoukankan      html  css  js  c++  java
  • [PowerShell]–Checking the version of Office installed

    – Create and initialize the object

    $objExcel = New-Object -ComObject Excel.Application

    – Query the version of the Office installed

    $objExcel.version

    – Query the build of the Office installed

    $objExcel.build

    Get-OfficeVersion   function原文地址:http://www.amandhally.net/2013/07/03/powershell-script-get-the-file-and-product-version-of-ms-office-applications/

    function Get-OfficeVersion{
     <#
     .SYNOPSIS
     Get's the Version info of Word, Excel, Outlook, and PowerPoint.
     .DESCRIPTION
     Out-of-the box, a Windows system automatically shares the root of every hard drive on the machine as $ (so you get C$, D$, A$, etc). These shares need to be enabled. The shares are ACL’ed so that only members of the local administrative group can access them.
     .EXAMPLE
     .NOTES
     .LINK
    http://www.amandhally.net/2013/07/03/powershell-script-get-the-file-and-product-version-of-ms-office-applications/
    http://blogs.msdn.com/b/larryosterman/archive/2005/05/26/422188.aspx
     #>
     [cmdletbinding()]
     param(
     #The computers to get
     [Parameter(ValueFromPipeline=$true)]
     [string[]]$ComputerName=$env:COMPUTERNAME
     )
     begin{}
     process{
     foreach($Computer in $ComputerName){
     #$wordPath = “\$ComputerC`$Program Files*Microsoft OfficeOffice*WINWORD.EXE”
    #$excelPath = “\$ComputerC`$Program Files*Microsoft OfficeOffice*EXCEL.EXE”
    #$powepointPath = “\$ComputerC`$Program Files*Microsoft OfficeOffice*POWERPNT.EXE”
    $outlookPath = “\$ComputerC`$Program Files*Microsoft OfficeOffice*OUTLOOK.EXE”
    try{
     #$wordProperty = Get-ItemProperty -Path $wordPath -ErrorAction Stop
     #$excelProperty = Get-ItemProperty -Path $excelPath -ErrorAction Stop
     $outLookProperty = Get-ItemProperty -Path $outlookPath -ErrorAction Stop
     #$powerPointProperty = Get-ItemProperty -Path $powepointPath -ErrorAction Stop
     
    Write-Output ([PSCustomObject]@{ComputerName=$Computer;Office=$outLookProperty.VersionInfo.ProductVersion})
     
    <#Write-Output ([PSCustomObject]@{ComputerName=$Computer;Office=@(
     [PSCustomObject]@{Product=’Word’;ProductVersion=$wordProperty.VersionInfo.ProductVersion;FileVersion=$wordProperty.VersionInfo.FileVersion},
     [PSCustomObject]@{Product=’Excel’;ProductVersion=$excelProperty.VersionInfo.ProductVersion;FileVersion=$excelProperty.VersionInfo.FileVersion},
     [PSCustomObject]@{Product=’Outlook’;ProductVersion=$outLookProperty.VersionInfo.ProductVersion;FileVersion=$outLookProperty.VersionInfo.FileVersion},
     [PSCustomObject]@{Product=’PowerPoint’;ProductVersion=$powerPointProperty.VersionInfo.ProductVersion;FileVersion=$powerPointProperty.VersionInfo.FileVersion}
     )})#>
     
     }
     catch{
     Write-Error $Error[0]
     }
     }
     }
     end{}
     }
     
     
    <#$servers=get-content D:clist.txt
    $OFF=Get-OfficeVersion -ComputerName $servers 
    $OFF | select computername,office | export-csv d:ctest1-100.csv -Encoding UTF8 -NoTypeInformation
    #>
    
    $servers=get-content D:serverlist1223.txt
    $export=@()
    foreach($server in $servers)
    {
    $Pingy = Get-WmiObject Win32_PingStatus -f "Address='$server'" 
        if($Pingy.StatusCode -eq 0)
            {
            $errorcount=$error.count
            $OFF=(Get-OfficeVersion -ComputerName $server).office
            if($errorcount -eq $error.Count)
                {
                if($OFF)
                   {
                    $info=New-Object psobject
                    $info |Add-Member -MemberType NoteProperty -Name ComputerName -Value $server
                    $info |Add-Member -MemberType NoteProperty -Name office -Value $OFF
                    $export+=$info
                    echo "$server is  $OFF"
                    }
                else{
                    $info=New-Object psobject
                    $info |Add-Member -MemberType NoteProperty -Name ComputerName -Value $server
                    $info |Add-Member -MemberType NoteProperty -Name office -Value "NO OFFICE"
                    $export+=$info
                    echo "$server is  no office"
                        }
                    }
            else{
                $info=New-Object psobject
                 $info |Add-Member -MemberType NoteProperty -Name ComputerName -Value $server
                 $info |Add-Member -MemberType NoteProperty -Name office -Value "error"
                $export+=$info
                echo "$server is  error"
                }
              }
            else{
            $info=New-Object psobject
                 $info |Add-Member -MemberType NoteProperty -Name ComputerName -Value $server
                 $info |Add-Member -MemberType NoteProperty -Name office -Value "notavailable"
                $export+=$info
                echo "$server is notavailable "
            }
        }
    $export |Export-Csv D:officeserver.csv -Encoding UTF8 -NoTypeInformation
     
    View Code

    Get-MSOfficeProductKey function

    function Get-MSOfficeProductKey {
        param(
        [string[]]$computerName = "."
        )
     
        $product = @()
        $hklm = 2147483650
        $path = "SOFTWAREMicrosoftOffice"
     
        foreach ($computer in $computerName) {
     
            $wmi = [WMIClass]"\$computer
    ootdefault:stdRegProv"
     
            $subkeys1 = $wmi.EnumKey($hklm,$path)
            foreach ($subkey1 in $subkeys1.snames) {
                $subkeys2 = $wmi.EnumKey($hklm,"$path$subkey1")
                foreach ($subkey2 in $subkeys2.snames) {
                    $subkeys3 = $wmi.EnumKey($hklm,"$path$subkey1$subkey2")
                    foreach ($subkey3 in $subkeys3.snames) {
                        $subkeys4 = $wmi.EnumValues($hklm,"$path$subkey1$subkey2$subkey3")
                        foreach ($subkey4 in $subkeys4.snames) {
                            if ($subkey4 -eq "digitalproductid") {
                                $temp = "" | select ComputerName,ProductName,ProductKey
                                $temp.ComputerName = $computer
                                $productName = $wmi.GetStringValue($hklm,"$path$subkey1$subkey2$subkey3","productname")
                                $temp.ProductName = $productName.sValue
     
                                $data = $wmi.GetBinaryValue($hklm,"$path$subkey1$subkey2$subkey3","digitalproductid")
                                $valueData = ($data.uValue)[52..66]
     
                                # decrypt base24 encoded binary data 
                                $productKey = ""
                                $chars = "BCDFGHJKMPQRTVWXY2346789"
                                for ($i = 24; $i -ge 0; $i--) { 
                                    $r = 0 
                                    for ($j = 14; $j -ge 0; $j--) { 
                                        $r = ($r * 256) -bxor $valueData[$j] 
                                        $valueData[$j] = [math]::Truncate($r / 24)
                                        $r = $r % 24 
                                    } 
                                    $productKey = $chars[$r] + $productKey 
                                    if (($i % 5) -eq 0 -and $i -ne 0) { 
                                        $productKey = "-" + $productKey 
                                    } 
                                } 
                                $temp.ProductKey = $productKey
                                $product += $temp
                            }
                        }
                    }
                }
            }
        }
        $product
    }
     
    # Example:
    # Get-MSOfficeProductKey Serv01,Serv02 | Format-Table * -auto# Get-MSOfficeProductKey -computerName (Get-Content servers.txt)
     
    View Code

    来自

     

    
    
  • 相关阅读:
    js点击弹出div层
    图片按比例缩小
    js标题文字向上滚动
    JS刷新当前页面
    图片缩放显示,不变形
    产品叠加搜索
    Oracle中DML基础知识
    Oracle中DDL的基础知识
    Sql多对多关系中外键的应用
    oracle 中sql语句的几个基本函数..
  • 原文地址:https://www.cnblogs.com/thescentedpath/p/outlookversion.html
Copyright © 2011-2022 走看看