从 Powershell 为 Word 文档设置密码

Setting password for Word doc from Powershell

我想为 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 中填写此字段吗?

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