Автоматизация с помощью power shell на примере взаимодействия outlook и active directory

Вы можете обращаться к данным в файлах Excel напрямую из PowerShell. Несмотря на то, что в PowerShell есть встроенные командлеты для импорта (Import-CSV) и экспорта (Export-CSV) табличных данных в CSV файлы, для конечных пользователей формат книг Excel более прост, понятен. С помощью автоматизации PowerShell и Excel вы можете инвентаризировать и строить красивые отформатированные отчеты по вашей инфраструктуре (компьютерам, серверам, пользователям, Active Directory и т.д.)

В этой статье мы покажем, как прочитать и записать данные в таблицу Excel с помощью PowerShell.

Сначала рассмотрим архитектуру объектной модели документа Excel, которая состоит из следующих уровней представлений:

  • Уровень приложения (Application Layer) – запущенное приложение Excel;
  • Уровень книги (WorkBook Layer) – одновременно могут быть открыты несколько книг (файлов/документов Excel);
  • Уровень листа (WorkSheet Layer) – в каждом XLSX файле может быть несколько листов;
  • Ячейки (Range Layer) – позволяет обратиться к данным в конкретной ячейке или диапазонe ячеек.

com модель документа excel

Доступ к данным в файле Excel из PowerShell

Рассмотрим на простом примере как получить доступ из PowerShell к данным в Excel файле со списком сотрудников.

excel файл с данными, как прочитать из powershell скрипта

Запустите приложение Excel (Application layer), создав COM объект:

Чтобы создать этот COM объект, Excel должен быть установлен на компьютере.

Эта команда запустите в фоновом режиме приложение Excel. Чтобы сделать окно Excel видимым, нужно изменить свойство Visible COM объекта:

Вывести все свойства объекта Excel:

Теперь можно открыть файл Excel (книгу, workbook):

отрыть excel файл с помощью powershell

В каждом файле Excel может быть несколько листов (worksheets). Вывести список листов в текущей книге Excel:

Теперь можно открыть конкретный лист (по его имени или индексу):<

Текущий (активный) лист Excel можно узнать командой:

выбрать активную книгу excel с помощью powershell

Для получения значения из ячейки Excel нужно указать ее номер. Теперь вы можете получить значения из ячеек документа Excel. Можно использовать различные способы адресации ячеек в книге Excel: через диапазон (Range), ячейку (Cell), столбец (Columns) или строку (Rows). Ниже показаны примеры получения данных из одной и той же ячейки:

:/>  Как пользоваться программой UltraISO -

powershell - получить значение ячейки excel

Записать значение в ячейку Excel из PowerShell

Вы можете изменить значение любой ячейки в книге Excel. Например, вы хотите изменить должность пользователя в файле.

Получить текущее значение ячейки:

Присвойте новое значение ячейке:

$ExcelWorkSheet.cells.Item(2, 3) = 'Начальник отдела продаж'

powershell: изменить значение в ячейке excel

Изменить размер шрифта и выделить новое значение жирным:

$ExcelWorkSheet.cells.Item(2, 3).Font.Bold = $true
$ExcelWorkSheet.cells.Item(2, 3).Font.size=14

Сохранить изменения и закрыть книгу Excel:

Закрыть приложение Excel:

Изменить шрифт в ячейке excel из powershell

Откройте XLSX файл и проверьте, что данные и шрифт в указанной ячейки были изменены.

Если вам нужно создать новый лист в документе Excel:

$ExcelWorkSheet = $ExcelWorkBook.Worksheets.Add()
$ExcelWorkSheet.Name = "NewSheet"

Удалить целиком столбец или строку:

$ExcelWorkSheet.cells.Item(5, 1).EntireRow.Delete()
$ExcelWorkSheet.cells.Item(2, 1).EntireColumn.Delete()

Как получить данные из Active Directory и сохранить их в книге Excel?

Рассмотрим практический пример как можно использовать PowerShell для получения данных из Excel. Например, вы хотите получить для каждого пользователя в Excel файле получить информацию из Active Directory. Например, его телефон (атрибут telephoneNumber), отдел (department) и email адрес (mail).

В результате в Excel файле для каждого пользователя были добавлены столбцы с информацией из AD.

powershell скрипт для получения данных пользователей из Active Directory и сохранения в Excel

Рассмотрим еще один пример построения отчета с помощью PowerShell и Excel. Допустим, вам нужно построить Excel отчет о состоянии службы Print Spooler на всех серверах домена.

  • Вы можете поручить сотруднику отдела кадров вести реестр пользователей в Excel, а затем с помощью PowerShellс скриптов создавать новых пользователей в AD (New-ADUser) или обновлять их данные (Set-ADUser). Можно делегировать этому пользователю права на изменение этих атрибутов.
  • Пример скрипта PowerShell для рассылки писем из Outlook по списку пользователям из Excel файла.

Получить данные их XLSX файла без установки Microsoft Office

Если вы хотите или не можете установить Excel на компьютере ( например у вас отсутствуют лицензии для активации Office или в случае с Windows Server Core), вы можете использовать кроссплатформенный PowerShell модуль ImportExcel для работы с Excel документами.

:/>  Почему тормозит ноутбук – причины

Установите модуль из PowerShell Gallery:

Рассмотрим типовые операции с книгами Excel, которые можно выполнить с помощью этого модуля.

Экспорт данных в XLSX файл:

Установка powershell модуля import-excel

Изменить значение в ячейке Excel:

С помощью PSObject можно добавить данные в таблицу Excel:

$FilePath = "C:\ps\ad_users.xlsx"
$ExcelData = Import-Excel -Path $FilePath -WorksheetName "AD_User_List"
$NewUser = [PSCustomObject]@{
  "UserName" = "aivanov"
  "FullName" = "Иванов Андрей"
  "Job" = "Инженер"
}
$ExcelData += $NewUser
Export-Excel -Path $FilePath -WorksheetName "AD_User_List" -InputObject $ExcelData

Добавить данные в лист excel файла из powershell

Оставьте комментарий