-
Notifications
You must be signed in to change notification settings - Fork 0
/
Powerpoint Slide Counter.ps1
39 lines (33 loc) · 1.36 KB
/
Powerpoint Slide Counter.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# PowerPoint File and Slide Counter Script
# Author: Peter Yates ([email protected])
# Date: 2018-05-18
# Load modules
Import-Module Microsoft.PowerShell.Management
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName Office
Add-Type -AssemblyName Microsoft.Office.Interop.Powerpoint
# Recursively identify all PPT and PPTX files
$strDir = "YOUR_DIRECTORY_HERE!!!"
$colFiles = Get-ChildItem $strDir -Recurse -File -Include *.ppt*| Select-Object FullName
# Create a powerpoint instance
$Application = New-Object -ComObject PowerPoint.Application
# Cycle through file list and count number of files and total number of slides
$intPages = 0
$arraySlideCount = @()
foreach($objFile in $colFiles)
{
#$objDoc = $Application.presentations.Open($colPath + $objFile.name, 2, $false, $false)
$objDoc = $Application.presentations.Open($objFile.FullName, 2, $false, $false)
$arraySlideCount += $objDoc.slides.count
$intPages = $intPages + $objDoc.slides.count
$application.ActivePresentation.Close
}
$Application.Quit()
# Sort array so largest is in 0 location
$arraySlideCount = $arraySlideCount | Sort-Object -Descending
# Print results
"Results for Directory " + $strDir
"Total Presentations: " + $colFiles.Length
"Total Slides: " + $intPages
"Avg. Slides per Presentation: " + $intPages/$colFiles.Length
"Longest Deck: " + $arraySlideCount[0] + " slides"