powershell操作word
我假設許多讀者用PowerShell生成服務器、事件以及Windows網絡上各種數據的報表。您也許創建過純文本文件,甚至漂亮的HTML報表。但是您也可以用上Microsoft Word,當然,前提是您已經安裝了Word。在這個系列的第二部分,我將會向您演示如何用PowerShell為Word文檔套用樣式。
創建Word應用程序對象
PowerShell可以通過COM接口控制Word應用程序。有趣的地方是,雖然您可以交互式地做所有的操作,但我希望您最終能夠用腳本操作一切。我們從創建一個Word程序對象開始。
代碼如下:
PS C:/> $word=new-object -ComObject "Word.Application"
如果您好奇的話,可以將這個對象輸出到 Get-Member 命令。我們將創建一系列對象,您可以將每一個對象通過管道輸出到 Get-Member 來探索它們。
下一步,我們創建一個文檔對象。
代碼如下:
PS C:/> $doc=$word.documents.Add()
現在,Word程序已經啟動,并且創建了一個新文檔,但是您在屏幕上看不到任何東西。通常這是正常的,因為我們需要它在后臺運行。但是如果您想查看所創建的文檔,您需要將應用程序的 Visible 屬性設置為 True。
代碼如下:
PS C:/> $word.Visible=$True
在我們插入文本之前,我們需要獲取焦點。創建一個 Selection 對象可以幫我們做一些諸如設置字體大小和顏色等操作,我們將在第二部分介紹這些操作。
代碼如下:
PS C:/> $selection=$word.Selection
用PowerShell在文檔中插入文本
現在光標在文檔的頂部,現在可以開始插入文本了。我們將用 Selection 對象的 TypeText() 方法插入當前的日期和時間。
代碼如下:
PS C:/> $selection.TypeText((Get-Date))
如果我們繼續插入文本,那么文本將會緊挨在日期的后面?,F在我們用 TypeParagraph() 方法插入一個回車符。
代碼如下:
PS C:/> $selection.TypeParagraph()
讓我們繼續插入一些文本。我將用WMI獲取本地計算機的操作系統信息。
代碼如下:
PS C:/> $os=Get-WmiObject -class win32_OperatingSystem
PS C:/> $selection.TypeText("Operating System Information for $($os.CSName)")
由于我希望寫入所有的非系統屬性,所以我將快速遞創建一個數組用來保存所有的屬性名。
代碼如下:
PS C:/> $os.properties | select Name | foreach -begin {$props=@()} -proc {$props+="$($_.name)"}
現在我可以從 $os 獲取所有的屬性并插入Word文檔。很重要的一點是 TypeText() 的值是字符串型的,所以我需要將內聯的PowerShell表達式通過管道輸出到 Out-String。
代碼如下:
PS C:/> $selection.TypeText(($os | Select -Property $props | Out-String))
如果需要的話,還可以繼續插入文字和圖片。當完成操作以后,我將保存并關閉文檔。
代碼如下:
新聞熱點
疑難解答