1

こんにちは、powershell を使用して「.doc、.docx、.pptx」ドキュメントの「隠しデータ」と個人情報セットを削除しようとしています。

$path = "C:\Users\anisjain\Documents\GRR Production\HiddenProrerties" 
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$xlRemoveDocType = "Microsoft.Office.Interop.xlRDIRemovePersonalInformation" -as [type] 
$wordFiles = Get-ChildItem -Path $path -include *.doc, *.docx -recurse 
$objword = New-Object -ComObject word.application 

foreach($obj in $wordFiles) 
{ 
$documents = $MSWord.Documents.Open($obj.fullname) 
"Removing document information from $obj" 
$documents.RemoveDocumentInformation($xlRemoveDocType::xlRDIRemovePersonalInformation) 
$documents.Save() 
$objword.documents.close() 
} 
$objword.Quit()

ただし、これは機能しません。誰かが私がどこで間違っているのか教えてもらえますか? そして、それを行う他の方法があれば。「非表示のドキュメント情報」を削除したいレコードが約 2000 あります。前もって感謝します。

4

1 に答える 1

4

いくつかのグーグル/コピー/変更の後、これが私のために働くスクリプトです

$path = "d:\rubbish\myfolder\"
Add-Type -AssemblyName Microsoft.Office.Interop.Word
$WdRemoveDocType = "Microsoft.Office.Interop.Word.WdRemoveDocInfoType" -as [type] 
$wordFiles = Get-ChildItem -Path $path -include *.doc, *.docx -recurse 
$objword = New-Object -ComObject word.application 
$objword.visible = $false 

foreach($obj in $wordFiles) 
{ 
    $documents = $objword.Documents.Open($obj.fullname) 
    "Removing document information from $obj" 
    # WdRemoveDocInfoType Enumeration Reference
    # http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.wdremovedocinfotype(v=office.14).aspx
    # 99 = WdRDIAll
    #$documents.RemoveDocumentInformation(99)
    $documents.RemoveDocumentInformation($WdRemoveDocType::wdRDIAll) 
    $documents.Save() 
    $objword.documents.close() 
} 
$objword.Quit()
于 2013-08-19T09:45:32.497 に答える