– 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 = “\\$Computer\C`$\Program Files*\Microsoft Office\Office*\WINWORD.EXE”
#$excelPath = “\\$Computer\C`$\Program Files*\Microsoft Office\Office*\EXCEL.EXE”
#$powepointPath = “\\$Computer\C`$\Program Files*\Microsoft Office\Office*\POWERPNT.EXE”
$outlookPath = “\\$Computer\C`$\Program Files*\Microsoft Office\Office*\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
 

Get-MSOfficeProductKey function

function Get-MSOfficeProductKey {
param(
[string[]]$computerName = "."
)
 
$product = @()
$hklm = 2147483650
$path = "SOFTWARE\Microsoft\Office"
 
foreach ($computer in $computerName) {
 
$wmi = [WMIClass]"\\$computer\root\default: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)
 

来自


[PowerShell]–Checking the version of Office installed的更多相关文章

  1. java compiler level does not match the version of the installed java project facet 解决方案

    项目出现 java compiler level does not match the version of the installed java project facet 错误,一般是项目移植出现 ...

  2. java compiler level does not match the version of the installed java project facet

    Java compiler level does not match the version of the installed java project facet错误的解决 因工作的关系,Eclip ...

  3. Java compiler level does not match the version of the installed Java project facet.(转)

    Java compiler level does not match解决方法 从别的地方导入一个项目的时候,经常会遇到eclipse/Myeclipse报Description  Resource P ...

  4. maven项目 Java compiler level does not match the version of the installed Java project facet

    因工作的关系,Eclipse开发的Java项目拷来拷去,有时候会报一个很奇怪的错误.明明源码一模一样,为什么项目复制到另一台机器上,就会报“java compiler level does not m ...

  5. Java compiler level does not match the version of the installed Java project facet.问题

    从同事那里拷贝过来的web项目,导入到eclipse中,出现Java compiler level does not match the version of the installed Java p ...

  6. Java compiler level does not match the version of the installed Java project facet. springmvc1 和 Target runtime Apache Tomcat v7.0 is not defined.

    Java compiler level does not match the version of the installed Java project facet.springmvc1 : Targ ...

  7. eclipse中切换jre后报错:Java compiler level does not match the version of the installed Java project facet.

    项目移除原来的jre环境lib后,添加本地的jre,报错如下: Java compiler level does not match the version of the installed Java ...

  8. 解决Java compiler level does not match the version of the installed Java project facet.问题

    其实之前遇到过Java compiler level does not match the version of the installed Java project facet.这个问题,因为当时没 ...

  9. 转:Java compiler level does not match the version of the installed Java project facet

    a.问题描述:eclipse加载新的项目后报一个错误,具体描述如下: Description Resource PathLocation Type Java compiler level does n ...

随机推荐

  1. 纯CSS弹出层,城市切换效果

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. Sublime Text的列模式

    Sublime Text的列模式如何操作? 听语音 | 浏览:6551 | 更新:2014-12-09 13:27 | 标签:软件 Sublime Text的列模式如何操作?各个系统不一样,请跟进系统 ...

  3. layui基础上的tree菜单动态渲染;

    var layout=[ { title:'脚本对象名称', treeNodes:true, headerClass:'value_col', colClass:'value_col', style: ...

  4. IntelliJ IDEA Mybatis Plugin 破解安装

    破解文件和截图全部在附件中,亲自破解,在使用中,感觉很棒: https://files.cnblogs.com/files/icenter/carck.zip

  5. jqgrid删除多行数据,删不全的解决方案

    功能实现: 删除选中的多条数据 bug: 总是删不干净,比如选中5条执行删除操作,后台全删掉了,可是前台仍然有剩余的几条,再次刷新会不见 错误代码: var ids = $("#grid-t ...

  6. Codeforces839D Winter is here 容斥

    /** 题目:Codeforces839D Winter is here 链接:http://codeforces.com/contest/839/problem/D 题意:给定n个数,求所有的最大公 ...

  7. android Bitmap用法总结(转载)

    Bitmap用法总结1.Drawable → Bitmappublic static Bitmap drawableToBitmap(Drawable drawable) {Bitmap bitmap ...

  8. Struts2包含哪些标签?

    Struts2包含哪些标签? 解答: A: <s:a href=”"></s:a>—–超链接,类似于html里的<a></a> <s:a ...

  9. 【BZOJ】3538: [Usaco2014 Open]Dueling GPS(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3538 题意不要理解错QAQ,是说当前边(u,v)且u到n的最短距离中包含这条边,那么这条边就不警告. ...

  10. MySQL Error: Illegal mix of collations for operation 'concat'

    在使用concat连接字符串时出现错误:MySQL Error: Illegal mix of collations for operation 'concat' 原因:字段操作默认为UTF8的编码, ...