首页 > 解决方案 > 检查word文件是否在powershell中受密码保护

问题描述

我编写了一个脚本来递归循环遍历每个目录,找到单词文件并将“机密”附加到页脚。这工作正常,直到它遇到一个导致脚本挂起的加密文件,当我在密码提示上单击取消时,它导致脚本崩溃。我试图在打开文档之前检查文档是否已加密,但提示仍然会打开,这会使脚本崩溃。是否有可靠的方法来检查文档是否受密码保护,可用于 .doc 和 .docx 文件?我已经尝试在另一个线程中使用代码,前两种方法不起作用,第三种方法检测到每个文件都是加密的,因为它会引发异常。

当前代码:

$word = New-Object -ComObject Word.Application
$word.Visible = $false
$files = Get-ChildItem -Recurse C:\temp\FooterDocuments -include *.docx,*.doc
$restricted = "CONFIDENTIAL"
foreach ($file in $files) {
    $filename = $file.FullName
    Write-Host $filename
    try {
        $document = $word.Documents.Open($filename, $null, $null, $null, "")
        if($document.ProtectionType -ne -1) {
            $document.Close()
            Write-Host "$filename is encrypted"
            continue
        }
    } catch {
        Write-Host "$filename is encrypted"
        continue
    }
    foreach ($section in $document.Sections) {
        $footer = $section.Footers.Item(1)
        $footer.Range.Characters.Last.InsertAfter("`n" + $restricted)
    }
    $document.Save()
    $document.Close()
}
$word.Quit()

标签: powershellms-word

解决方案


推荐阅读