检查Word文件在Powershell中是否受密码保护

时间:2018-07-09 14:42:09

标签: powershell ms-word

我编写了一个脚本,以递归地遍历每个目录,查找word文件,并将“机密”附加到页脚。直到遇到一个加密文件导致脚本挂起,当我在密码提示上单击“取消”时,它才导致脚本崩溃,此操作一直很好。我试图 在打开文档之前检查文档是否已加密,但是提示仍然打开,这使脚本崩溃。有没有可靠的方法来检查文档是否受密码保护,并且可以在.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()

0 个答案:

没有答案