从 Powershell 设置 Word 文档密码

问题描述 投票:0回答:2

我想为 Microsoft Word 文档设置打开该文档的密码。当我尝试在 Powershell 中运行以下代码时,一旦输入所需的密码,脚本就会挂起。

此脚本将在 Kaseya 中运行,以帮助自动保护 Word 文档。我尝试过修改

Document.Password
属性并使用
Document.Protect
方法,它们都会挂起脚本。

$path = Read-Host("Specify path to word document")

Write-Host "Creating Word application object..."
$wordAppObj = New-Object -ComObject Word.Application

Write-Host "Creating Word document object..."
$wordDocObj = $wordAppObj.Documents.Open($path)

# Write-Host "Activating Word document object..."
# $wordDocObj.Activate

Write-Host "Setting password..."
$securePass = Read-Host("Set password as") -AsSecureString
$password = ConvertFrom-SecureString $securePass
# $wordDocObj.Protect(3, $true, $password)
$wordDocObj.Password = $password

Write-Host "Saving Word document object..."
$wordDocObj.Save

Write-Host "Closing the Word document..."
$wordDocObj.Close

Write-Host "Closing Word..."
$wordAppObj.Application.Quit()

我希望脚本能够运行并保护文件,但脚本将挂起,并且 Microsoft Word 的实例将在后台运行,占用大约 6-9% 的 CPU。文件或脚本中不会发生任何事情。没有弹出错误消息。

更新:按照建议,我将

$wordAppObj.Visible = $true
添加到脚本中,以查看脚本执行过程中是否发生任何弹出窗口。不幸的是,我没有看到任何。我相信当脚本提示用户重新输入密码时可能会挂起。当我使用 Word 使用密码加密文档时会发生这种情况。有什么方法可以从 Powershell 填写此字段吗?

vba powershell ms-word password-protection
2个回答
0
投票

我使用 Microsoft Interop Reference for Word 开发了一个 C# 程序。这个程序对我有用。在这一点上,我认为这种事情无法通过 Powershell 完成,我建议任何尝试这样做的人寻求另一种方法来完成这项工作。我认为 Powershell 根本不支持修改文档的密码字段。


0
投票

如果有人偶然发现这个问题,我在尝试设置

Password
属性时在 Powershell 中遇到了错误。

解决方案是设置

WritePassword
属性,因为文档不受读取保护,只能写入。

希望它对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.