检查Word文档是否从PowerShell只读

免费软件服务器

我正在尝试检测MSOffice是否已将“ Microsoft Word文档”配置为“只读”。

我阅读的所有内容都与使用进行检查有关Get-ItemProperty "C:\tmp\readonly.docx" | Select-Object IsReadOnly,但是从文件系统级别检查文件是否为“只读”。

问题是Microsoft不在外部标记它,您需要打开/检查我认为的Microsoft COM对象以查询文档是否为只读。

PS C:\Users\Admin> Get-ItemProperty "C:\tmp\readonly.docx" | Select-Object IsReadOnly


IsReadOnly
----------
     False

更新:如果文件配置为RO不带a,Password则可以简单地以RW不带提示的方式打开(通过powershell),但是如果带a,Password则系统会提示您确认RO状态,这是我要避免的状态,因为它挂了我的脚本。

免费软件服务器

好的,为此进行测试,我有3个文件,如下所示:

  • A)一个普通人test.docx,没有任何限制
  • B)一个readonly.docx带密码。这是一个提示让我挂断的文件
  • C)一个nopass.docx带有只读设置,但未配置PWD。

A和C不管会打开ReadOnly设置,但B将挂在提示即使DisplayAlerts设置为0您也无法检查该ReadOnly属性,除非超过了提示,或者如果您将其设置TRUE为总是不正确的话。

如果没有第一个openeing文档,就找不到我无法检查ReadOnlyorHasPassword属性的方法。您可能可以检查XML文件中的HEX,但是我认为这不太可靠。我的方式只是花了一些测试/小技巧才能开始工作。重要的部分是我必须传递密码并在密码失败时进行捕获。A/C即使您传递了密码参数,Doc的打开效果也会很好,因此不会造成任何伤害。在抓我设置ReadOnly = TRUEVisible = TRUE您可能不需要将可见部分设置为true,但是如果那样的ReadOnly = TRUE话,您将无法通过VB(例如ORIENTATION进行某些调整,而我会使用,SENDKEYS因此我需要UI if ReadOnly = TRUE同样,隐藏UI只是一个“奖励”,但不是必需的。如果我继续浪费时间为代码编写代码IF/THEN,则可以将其设置为始终可见OPENUI 陈述。

无论如何...这是测试这三个文件的最终代码片段,这将导致每个文件打开并带有提示符。

 #Constants
 Clear-Variable ReadOnly
 $missing = [System.Type]::Missing
 $str = ''
 $PASSWD = 'IsPWDProtected?'
 $wdAlertsNone = 0
 $FILENAME = "C:\tmp\readonly.docx"
 $OPENUI = "TRUE"

 #Start Word
 $ObjWord = New-Object -comobject Word.Application
 IF ($OPENUI -eq "FALSE"){$ObjWord.Visible  = $FALSE}ELSE{$ObjWord.Visible  = $TRUE}
 $ObjWord.Application.DisplayAlerts = $wdAlertsNone

 #.Open
 IF (!$ConfirmConversions){$ConfirmConversions = $missing}
 IF (!$ReadOnly){$ReadOnly = $FALSE}
 IF (!$AddToRecentFiles){$AddToRecentFiles = $missing}
 IF (!$PasswordDocument){$PasswordDocument = $PASSWD}
 IF (!$PasswordTemplate){$PasswordTemplate = $PASSWD}
 IF (!$Revert){$Revert = $False} 
 IF (!$WritePasswordDocument){$WritePasswordDocument =  $PASSWD}
 IF (!$WritePasswordTemplate){$WritePasswordTemplate =  $PASSWD} 
 IF (!$Format){$Format = 'wdOpenFormatAuto'} 
 IF (!$Encoding){$Encoding = $missing}
 IF (!$Visible){$Visible = $False} 
 try{$ObjDoc=$ObjWord.documents.open($FILENAME,$ConfirmConversions,$ReadOnly,$AddToRecentFiles,$PasswordDocument,$PasswordTemplate,$Revert,$WritePasswordDocument,$WritePasswordTemplate,$Format,$Encoding,$Visible)}
  catch {
     Write-Error  $_
     Write-Host "Opening Read_Only"
     $ReadOnly = $TRUE
     $Visible = $TRUE
     $ObjDoc=$ObjWord.documents.open($FILENAME,$ConfirmConversions,$ReadOnly,$AddToRecentFiles,$PasswordDocument,$PasswordTemplate,$Revert,$WritePasswordDocument,$WritePasswordTemplate,$Format,$Encoding,$Visible)
 }

#AllDone?
PAUSE
$ObjWord.ActiveDocument.Close(0)
$ObjWord.Quit()
[gc]::collect()
[gc]::WaitForPendingFinalizers()
[gc]::collect()
[gc]::WaitForPendingFinalizers()
sleep 2

结果:

PS C:\Users\Admin> C:\tmp\test.ps1
C:\tmp\test.ps1 : The password is incorrect. Word cannot open the document. (C:\tmp\readonly.doc)
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,test.ps1
 
Opening Read_Only
Press Enter to continue...: 

注意:我OPENUI = TRUE在测试过程中进行了硬编码,因为如果在关闭UI的情况下将其挂在提示符下,则必须使用tskill winword.exe并重新开始。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Asp.net检查HttpPostedFileBase是否为Word文档

来自分类Dev

如何检查Office文档excel是否为只读office.js插件

来自分类Dev

如何解锁只读的Word文档表单?

来自分类Dev

检查每行的Word文档样式

来自分类Dev

从 Powershell 设置 Word 文档的密码

来自分类Dev

如何检查我的工作簿(excel)是否从Word文档中打开?

来自分类Dev

检查文档字段是否存在

来自分类Dev

如何在SWT Shell中以只读模式打开Word文档

来自分类Dev

尝试保存文档时,MS Word进入只读模式

来自分类Dev

如何通过FileExplorer以只读方式打开SharePoint Word文档?

来自分类Dev

如何在SWT Shell中以只读模式打开Word文档

来自分类Dev

如何操作以只读模式打开的Word 2013文档

来自分类Dev

在Word 2007中编辑文档时,文档突然变为只读状态

来自分类Dev

只读检查git工作副本是否在其远程后面

来自分类Dev

检查文件是否在UWP中具有只读标志

来自分类Dev

如何在C中检查文件是否处于只读模式

来自分类Dev

如何使用extendscript检查属性值是否为只读?

来自分类Dev

如果该字段存在,则检查它是否为只读

来自分类Dev

我们可以检查属性是否为只读

来自分类Dev

Powershell在Word文档中调整图像大小

来自分类Dev

PowerShell:更新/刷新Word文档的目录

来自分类Dev

Powershell脚本更改word文档的字体

来自分类Dev

Powershell:检查文件是否被锁定

来自分类Dev

Powershell:检查文件是否被锁定

来自分类Dev

xpath检查文档是否包含文本

来自分类Dev

检查Sphinx文档是否调用了脚本

来自分类Dev

如何检查是否存在多个文档

来自分类Dev

Firestore:检查虚拟文档是否存在

来自分类Dev

检查本地是否存在Firestore文档

Related 相关文章

热门标签

归档