Иногда приходится создавать с помощью PowerShell различные документы (отчеты по серверам, выборки из логов и пр. подобная информация). Обычно данные сохраняются в виде обычного текстового файла, либо конвертируются в HTML. Но если у вас на компьютере установлен MS Office, то данные можно сохранять в виде документа Word. Итак, предположим, что нам необходимо создать новый документ и добавить в него текст.
Первым делом запускаем Word:
$Word = New-Object -ComObject Word.Application
Приложение запущено, но оно работает в фоновом режиме и остается невидимым для пользователя. В принципе, для создания документа это не обязательно, но если вы хотите видеть результат, то надо сделать его видимым. Для этого необходимо изменить свойство Visible:
$Word.Visible = $true
Cоздаем новый документ:
$Document = $Word.Documents.Add()
Документ открыт, но перед тем, как приступить к его редактированию, необходимо выделить участок текста или весь документ:
$Selection = $Word.Selection
Теперь добавим в документ текст с помощью метода TypeText:
$Selection.TypeText(″PowerShell&Word″)
и сохраним документ в файл:
$File = C:\Temp\psword.doc
$Document.SaveAs([ref]$File)
Закрываем документ и выходим из Word:
$Document.Close()
$Word.Quit()
А теперь откроем созданный файл. Для этого опять запускаем Word и делаем его видимым:
$Word = New-Object -ComObject Word.Application
$Word.Visible = $true
Открываем документ:
$File = ″C:\Temp\psword.doc″
$Document = $Word.Document.Open($File)
И смотрим, что получилось.
Теперь добавим еще пару строк текста. А для того, чтобы разбить текст на строки, используем метод TypeParagraph:
$Selection = $Word.Selection
$Selection.TypeParagraph()
$Selection.TypeText(″Power″)
$Selection.TypeText(″Shell″)
$Selection.TypeParagraph()
$Selection.TypeText(″&″)
$Selection.TypeParagraph()
$Selection.TypeText(″Word″)
Проверяем результат
Ну и в завершение немного украсим текст. Для этого выберем шрифт:
$Selection.Font.Name = ″Verdana″
Сделаем шрифт жирным (Bold) и наклонным (Italic):
$Selection.Font.Bold = $True
$Selection.Font.Italic = $True
Увеличим размер шрифта:
$Selection.Font.Size = 18
И изменим цвет на зеленый:
$Selection.Font.Color = ″wdColorGreen″
Добавляем текст:
$Selection.TypeText(″Word&PowerShell″)
В результате получим такую картину
Посмотреть доступные цвета можно командой:
[Enum]::GetNames([Microsoft.Office.Interop.Word.wdColor])
И еще, если необходимо сохранить документ в определенном формате (например для обеспечения совместимости) то формат можно указать явно. Вывести список доступных форматов можно командой:
[Enum]::GetNames([Microsoft.Office.Interop.Word.wdSaveFormat])
Для примера сохраним документ в формате OpenDocument:
$File = ″C:\Temp\psword.doc″
$Document.SaveAs([ref]$SaveFormat::wdFormatOpenDocumentText)
$Word.Quit()
На этом, пожалуй, все. Узнать больше о свойствах и методах объекта Word.Selection, использующегося для редактирования текста, можно на MSDN. Также здесь есть ряд подробных статей по данной теме.
Очень полезная подборка команд, даже уже