我想让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中填入这个字段?
发布于 2019-08-09 02:32:32
我已经用Microsoft Interop reference for Word用C#开发了一个程序。这个程序对我很有效。在这一点上,我认为这类事情不能从Powershell完成,我建议任何试图做到这一点的人寻求另一种方法来完成这件事。我认为Powershell根本不支持修改文档的密码字段。
https://stackoverflow.com/questions/57377228
复制相似问题