有人要求我在工作中确保每个人在PowerPoint应用程序上都具有相同的默认主题,以便每个人都统一且合规。问题是我不知道如何做,但我知道Power-Shell可以为我做到这一点。我从一个好的技巧开始,但是这个脚本对我不起作用。
Add-type -AssemblyName office
$Application = New-Object -ComObject powerpoint.application
$application.visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$themePath = "C:\Users\emp\AppData\Roaming\Microsoft\Templates\Document Themes\Theme1.thmx"
$path = "C:\Users\emp\AppData\Roaming\Microsoft\Templates\Document Themes"
Get-ChildItem -Path $path -Include "*.ppt", "*.pptx" -Recurse |
ForEach-Object {
$presentation = $application.Presentations.open($_.fullname)
$presentation.ApplyTemplate($themePath)
$presentation.Save()
$presentation.Close()
"Modifying $_.FullName"
}
$application.quit()
$application = $null
[gc]::collect()
[gc]::WaitForPendingFinalizers()
谁能说明如何使用Powershell更改默认主题?任何帮助将不胜感激!
答案 0 :(得分:0)
您没有说您正在使用的PowerPoint版本。每个版本都与前一个版本有所不同,甚至取决于您是通过对象模型进行填充的。
通常,您正在使用的代码应该可以解决您的用例(看起来像是您从此处使用:PowerShell 101 blog或此处:Hey, Scripting Guy! How Can I Customize Microsoft PowerPoint Presentations所利用的),但是您并不是在说自己有任何用处。您使用的错误。那么,这是什么意思?
我从一个好的技巧开始,但是这个脚本对我不起作用。
我不确定为什么您会觉得PowerShell是执行此操作的选项。用户仍然必须运行它才能进行更改,或者用户可以只在PowerPoint中自己进行设置。
在PP2K16中,他们只是这样做:
当然,您可以编写这些步骤的脚本,但是无法阻止用户使用他们下载或创建的其他模板,修改您刚刚设置的模板或默认情况下不属于PowerPoint的模板。
简而言之,您不能从技术上强迫用户在PowerPoint中使用给定的模板。 MSOffice / PowerPoint中没有设置允许该设置。
这听起来像您正在尝试使用技术来解决用户习惯问题。那真的不是什么。如果您的组织有标准,而用户却没有遵守或努力规避它,那么这就是人力资源问题。
您可以删除所有现有模板,仅将所需模板复制到默认文件夹,然后使用GPO设置默认模板。同样,这仍然不会阻止用户进行添加或修改。