Powershell: Get Office Software
-
Try this.
$computers = Get-Content -Path C:\computers.txt ForEach ($computer in $computers) { $results = Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue { Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* -ErrorAction SilentlyContinue | ` Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | ` Where-Object {$_.DisplayName -like '*Microsoft Office*'} } $results | Export-Csv -NoTypeInformation -Path "C:\test.csv" }
-
@black3dynamite said in Powershell: Get Office Software:
$computers = Get-Content -Path C:\computers.txt
ForEach ($computer in $computers)
{
$results = Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall* -ErrorAction SilentlyContinue |Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Where-Object {$_.DisplayName -like 'Microsoft Office'}
}
$results | Export-Csv -NoTypeInformation -Path "C:\test.csv"
}That creates the file, but the file ends up blank
-
@Tim_G said in Powershell: Get Office Software:
I spent a decent amount of time on this out of curiosity and finally got something together that I actually tested with various domain PCs, and works:
$computers = Get-Content -Path C:\computers.txt ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Where-Object {$_.DisplayName -like '*Microsoft Office*'} | Export-CSV -NoTypeInformation "C:\test.csv"} }
I suppose you can figure out how to change it to what will work in your environment if you have issues connecting to computers. This should get you going.
The test.csv file ends up showing up on each computer.
-
@black3dynamite said in Powershell: Get Office Software:
@Tim_G said in Powershell: Get Office Software:
I spent a decent amount of time on this out of curiosity and finally got something together that I actually tested with various domain PCs, and works:
$computers = Get-Content -Path C:\computers.txt ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Where-Object {$_.DisplayName -like '*Microsoft Office*'} | Export-CSV -NoTypeInformation "C:\test.csv"} }
I suppose you can figure out how to change it to what will work in your environment if you have issues connecting to computers. This should get you going.
The test.csv file ends up showing up on each computer.
Yeah change the path to a network location.
-
@Texkonc said in Powershell: Get Office Software:
@black3dynamite said in Powershell: Get Office Software:
$computers = Get-Content -Path C:\computers.txt
ForEach ($computer in $computers)
{
$results = Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall* -ErrorAction SilentlyContinue |Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Where-Object {$_.DisplayName -like 'Microsoft Office'}
}
$results | Export-Csv -NoTypeInformation -Path "C:\test.csv"
}That creates the file, but the file ends up blank
You need to include the stars on each side of 'Microsoft Office'
-
I made a few changes, mainly appending data output to a central CSV file:
$computers = Get-Content -Path "C:\computers.txt" ForEach ($computer in $computers) { Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue -ScriptBlock {Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Where-Object {$_.DisplayName -like '*Microsoft Office*'} | Export-CSV -NoTypeInformation -Append -Path "\\YOURCOMPUTER\c$\test.csv"} }
-
@Tim_G said in Powershell: Get Office Software:
@Texkonc said in Powershell: Get Office Software:
@black3dynamite said in Powershell: Get Office Software:
$computers = Get-Content -Path C:\computers.txt
ForEach ($computer in $computers)
{
$results = Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall* -ErrorAction SilentlyContinue |Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Where-Object {$_.DisplayName -like 'Microsoft Office'}
}
$results | Export-Csv -NoTypeInformation -Path "C:\test.csv"
}That creates the file, but the file ends up blank
You need to include the stars on each side of 'Microsoft Office'
Nevermind, the website uses it as italics.
-
@Tim_G said in Powershell: Get Office Software:
@Tim_G said in Powershell: Get Office Software:
@Texkonc said in Powershell: Get Office Software:
@black3dynamite said in Powershell: Get Office Software:
$computers = Get-Content -Path C:\computers.txt
ForEach ($computer in $computers)
{
$results = Invoke-Command -ComputerName $computer -ErrorAction SilentlyContinue {
Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall* -ErrorAction SilentlyContinue |Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Where-Object {$_.DisplayName -like 'Microsoft Office'}
}
$results | Export-Csv -NoTypeInformation -Path "C:\test.csv"
}That creates the file, but the file ends up blank
You need to include the stars on each side of 'Microsoft Office'
Nevermind, the website uses it as italics.
Escape them with a backslash
You need to include the stars on each side of '*Microsoft Office*'
or put them in single backticks.
You need to include the stars on each side of'*Microsoft Office*'
-
This one fit my needs for now.
///
Get-Content -Path c:\scripts\Computers.txt | ForEach-Object {Get-WmiObject -Class Win32_Product -ComputerName $} | select-object PSComputerName,Name,Vendor,Version | Where-Object {$.Name -like "Microsoft Office"} | out-file c:\scripts\installed.txt
/// -
Get-Content -Path c:\scripts\Computers.txt | ForEach-Object {Get-WmiObject -Class Win32_Product -ComputerName $_} | select-object PSComputerName,Name,Vendor,Version | Where-Object {$_.Name -like "*Microsoft Office*"} | Format-Table PSComputerName,Name,Vendor,Version -Wrap -Auto | out-file c:\scripts\installed.txt
Updated. Management Framework 3 or higher required