Глава 5. Добавление оснасток/ модулей
Содержание
Microsoft и прочие сторонние построили оснастки или модули PowerShell для своих собственных разнообразных продуктов. Для применения командлетов PowerShell с этими технологиями вам придётся в свои сценарии либо добавлять их оснастки, либо импортировать их модули.
Оснастки PowerShell это наследуемые продукты, поскольку в наши дни всё поставляется модулями. Вы можете рассматривать модуль в качестве некой батарейки, которая необходима для исполнения вашего сценария. Всякий модуль это пакет, который содержит командлеты, поставщиков, функции, синонимы и прочее.
Хотя оснастки и наследуются, давайте кратко затронем и их, отобразив те продукты, которые применяют (применяли) их.
Exchange Sever сам по себе является наилучшим примером демонстрации оснасток PowerShell. Exchange 2007 и 2010, оба, пользуются оснастками.
Для добавления оснастки Exchange в свои сценарии, вы можете применять приводимый ниже код. (Примеры оснасток Exchange 2007 и 2010 находятся, соответственно, в Листинге 5-1 и в Листинге 5-2). Поскольку эти продукты официально завершили состояние своего срока поддержки, их применение достаточно редкое (они применимы лишь для организаций, которые ещё пока не обновились).
Замечание | |
---|---|
В вашей машине следует вначале установить исполняемые файлы управления Exchange, иначе оснастка не заработает. |
Листинг 5-1. Код для добавления оболочки управления Exchange 2007
If ((Get-PSSnapin | where {$_.Name -match "Exchange.Management"}) -eq $null)
{
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
}
Листинг 5-2. Код для добавления оболочки управления Exchange 2010
If ((Get-PSSnapin | Where-Object { $_.Name -match "Microsoft.Exchange.Management.PowerShell.E2010" }) -eq $null) {
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
}
После того как оснастка была добавлена в ваши сеанс или сценарий, она способна исполнять команды Exchange внутри своего окна, как это показано на Рисунке 5-1.
Вы также можете воспользоваться в своём окне PowerShell get-pssnapin
для проверки
того, какие оснастки доступны.
На Рисунке 5-2 я хочу воспользоваться имеющимся преимуществом
оболочки Quest, поэтому я применяю get-pssnapin
в оболочке Quest AD для выявления
названия соответствующей оснастки.
Листинг 5-3 показывает как добавлять соответствующую оснастку в ваш сценарий PowerShell или в сеанс при помощи той же самой технологии что и для продукта Exchange.
Листинг 5-3. Код для добавления оболочки управления Quest AD
If ((Get-PSSnapin | where {$_.Name -match "Quest.ActiveRoles"}) -eq $null)
{
Add-PSSnapin Quest.ActiveRoles.ADManagement
}
Замечание | |
---|---|
Приведённый выше код добавления оснастки сначала проверяет не имеется ли уже эта оснастка. Если это так, он ничего не выполняет. В противном случае он добавляет необходимую оснастку. |
Теперь давайте рассмотрим модули, поскольку именно с ними мы будем иметь дело в своей повседневной работе. Согласно Microsoft, "модуль это пакет, который содержит участников PowerShell, таких как, командлеты, поставщиков, рабочие потоки, переменные и синонимы. Все участники этого пакета могут реализовываться в неком сценарии PowerShell, скомпилированном DLL или в комбинации обоих. Эти файлы обычно совместно группируются в неком отдельном каталоге."
В языке программирования PowerShell нам требуются модули для взаимодействия с различными продуктами, такими как Azure, Office 365, Exchange Online и тому подобными.
Gallery PowerShell по- существу это репозиторий, который содержит почти все модули, которые может применять всякий.
Для установки модуля в вашей машине из Gallery PowerShell, воспользуйтесь таким кодом:
Install-Module -Name AzureAD
Введите yes (как это показано на Рисунке 5-3), когда получите приглашение на установку необходимого модуля.
После установки этого модуля в вашей машине, он сохранится в C:\Program
Files\WindowsPowerShell\Modules
, как это отображено на
Рисунке 5-4.
Могут иметься случаи, когда разработчик создал новую версию соответствующего модуля и вы желаете обновить свою машину такой новой версией. Для обновления уже имеющегося модуля воспользуйтесь следующими командами:
Update-Module -Name AzureAD
или
Install-Module -Name AzureAD -force #(она также обновит ваш модуль до последней версии)
При помощи update
вы можете к тому же обновлять свой модуль до определённой
версии:
Update-Module -Name AzureAD -RequiredVersion 1.0.1
Удаление соответствующего модуля это простая операция и она может выполняться как показывает следующий командлет:
Remove-Module AzureAD
После того как вы установили необходимый модуль, что является одноразовой задачей, и хотите воспользоваться этим модулем,
вы можете осуществить это при помощи команды Import-Module
.
Замечание | |
---|---|
После powerShell V3 модули загружаются автоматически после того как в вашем сценарии запускается самый первый командлет из этого модуля. |
Вы всё ещё можете практиковать импорт необходимых модулей в своём сценарии перед исполнением команды:
Import-Module AzureAD
Для получения всех установленных в вашей машине модулей вы можете воспользоваться приводимым ниже кодом (его результаты отображены на Рисунке 5-5):
Get-Module -ListAvailable
Данная книга посвящена кодам шпаргалок для создания сложных сценариев, здесь приводится модуль шпаргалки, который наполнен функциями, которые вы можете применять для выполнения сложных функций внутри своих сценариев. Я только что создал этот модуль в помощь сообществу с их написанием сценариев. Время от времени я обновляю его до новой версии, по мере изменения его функциональных возможностей для различных продуктов.
Название модуля: vsadmin
Установка модуля (см. Рисунок 5-6:
Install-Module -Name vsadmin
После его установки вы обнаружите файлы, созданные внутри вашего каталога модуля (C:\Program
Files\WindowsPowerShell\Modules
), как это отображено на
Рисунке 5-7.
Как постулировалось, вы можете импортировать этот модуль в свой сеанс при помощи import-module
как- то так:
import-module vsadmin
Рисунок 5-8 показывает доступные внутри полученного модуля
vsadmin
команды. Вы можете пользоваться приводимой ниже командой для проверки функций и
командлетов в любом модуле:
Давайте изучим функции Office 365, а затем вы переместитесь к прочим функциям системного администратора, которые вы можете применять ежедневно.
-
LaunchEOL/RemoveEOL
(Exchange Online) -
LaunchSOL/RemoveSOL
(Skype Online) -
LaunchSPO/RemoveSPO
(SharePoint Online) -
LaunchCOL/RemoveCOL
(Security и Compliance) -
LaunchMSOL/RemoveMSOL
(MSonline Azure Active Directory) -
LaunchEXOnprem/RemoveEXOnprem
(для сервера Exchange на площадке)
Три функции из office 365 снабжены префиксом с тем, чтобы они не конфликтовали с командами на площадке и быстро применялись/
распознавались в неком гибридном сценарии. Например, команда Exchange Online get-mailbox
это get-EOLmailbox
, если вы применяете этот модуль для её запуска, как это показано
позднее.
Замечание | |
---|---|
Для функций office 365 необходимы следующие естественные модули office 365 в модуле
|
-
Все командлеты пребывают в модуле команды Skype Online (Retired)
Например, когда вы хотите подключиться к Office 365 Exchange online, вы можете воспользоваться
LaunchEOL
, она выдаст приглашение для авторизации и, после таковой, вы получите
подключение. Здесь также выполнится проверка установлена ли в вашем компьютере или нет оболочка управления Exchange Online.
Если её нет, вы получите подсказку. Обратите внимание на
Рисунок 5-9.
Рисунок 5-10 показывает вам что вы подключены и можете применять команды Exchange.
Если вы хотите воспользоваться этими командами а сценарии без ввода всякий раз пароля (техника, которой вы обучитесь по
завершению данной книги), можно воспользоваться LaunchEOL -Credential
передавая
полномочия PS.
Аналогичным образом вы можете применять прочие функции, потому как они разработаны подобно. Например, воспользуйтесь этим кодом и просмотрите его результаты на Рисунке 5-11.
LaunchSPO –orgName techwizard
Совет | |
---|---|
Нажатие Tab на клавиатуре после нажатия дефиса отобразит вам те параметры, которые требуются для любой функции в PowerShell. |
Для отключения от сеанса вы можете применять следующие функции: RemoveEOL
/
RemoveSOL
/ RemoveSPO
и т.д..
Другими хорошими функциями, которые на самом деле нравятся системным администраторам выступают функции
LaunchEXOnprem
/ RemoveEXOnprem
, поскольку они
предназначены для серверов Exchange на площадке. Для подключения к некому серверу Exchange с площадки в своей сетевой среде
воспользуйтесь таким кодом:
LaunchEXOnprem -psurl http://exchangeserver.techwizard.cloud/Powershell
или
LaunchEXOnprem -ComputerName exchangeserver.techwizard.cloud
Для отключения воспользуйтесь той же самой техникой что и для функций Office 365:
RemoveEXOnprem -computername exchangeserver.techwizard.cloud
Давайте теперь обсудим общие функции внутри данного модуля. В Главе 2
мы уже делились функциями Write-Log
, Set-recyclelogs
и start-progressbar
, а также прочими. Эти функции также выступают частью данного модуля, а
потому вам не следует копировать их и вставлять в свои сценарии когда вы импортировали данный модуль в свой сценарий. Просмотрите
Листинг 5-4 и
Рисунок 5-12.
Листинг 5-4. Импорт vsadmin и применение функции Write-Log
Import-Module vsadmin
$log = Write-Log -Name "log_file" -folder logs -Ext log
Write-Log -Message "Information..........Script" -path $log #default will log as information
Write-Log -Message "warning.........Message" -path $log -Severity Warning #you can display warning using the severity
Write-Log -Message "error.........Error" -path $log -Severity error #you can display error using the severity
Аналогичным образом вы можете создавать файл CSV:
$report = Write-Log -Name "log_Enable" -folder reports -Ext csv
Я не вдаюсь в прочие функции, которыми поделился в предыдущих главах. Я просто хотел показать как они могут применяться также и таким образом.
Вы можете применять пароль и позднее применять его в своём сценарии для подключения к интернет службам, таким как Office 365 и Azure следующим образом (для результатов этого обратитесь к Рисунку 5-13):
Save-EncryptedPassword -password "testpassword" -path c:\temp\password1.txt
Другой важной функцией, которую вы можете применять в своих сценариях для считывания полномочий из своего зашифрованного
текстового файла, который вы создали выше, выступает get-auth
. Вы можете пользоваться ею
следующим образом:
$cred = get-auth -userId sukhija@techwizard.cloud -passwordfile c:\temp\password1.txt
$pwd = $cred[0] ### полномочия, которые могут применяться внутри вызовов csom /api.
$pscredential = $cred[1] ###полномочия, которые могут применяться для функций, которые поддерживают полномочия ps.
или
$cred = get-auth -userId sukhija@techwizard.cloud -password "encryptedpassword"
$pwd = $cred[0] ### полномочия, которые могут применяться внутри вызовов csom /api.
$pscredential = $cred[1] ###полномочия, которые могут применяться для функций, которые поддерживают полномочия ps.
Давайте воспользуемся фрагментом кода шпаргалки для подключения к Office 365 при помощи сохранённых в вашем файле полномочий PS и экспорту отчёта CSV в почтовые ящики. (Его можно видоизменить и запускать по расписанию по мере необходимости). Смотрите Листинг 5-5 и Рисунок 5-14.
Листинг 5-5. Код отображения применения полномочий PS
Import-Module vsadmin
$cred = get-auth -userId sukhija@techwizard.cloud -passwordfile "c:\temp\password1.txt" #getcredentials that you created using Save-EncryptedPassword
$pscredential = $cred[1] ###полномочия, которые могут применяться для функций, которые поддерживают полномочия ps.
LaunchEOL -Credential $pscredential
$data = Get-EOLMailbox -ResultSize unlimited | Select Name,WindowsEmailAddress,IssueWarningQuota, ProhibitSendQuota,ProhibitSendReceiveQuota #fetch the required data from exchange online
$data | Export-Csv "c:\temp\mailboxes.csv" -NoTypeInformation #export the data in csv format
RemoveEOL #отключаем свой обмен интернет сеанса
Для считывания файлов ini пользуйтесь Get-IniContent
, а затем применяйте в сценариях
полученные значения. Смотрите Рисунок 5-15.
На Рисунке 5-16 вы можете разглядеть пример следующего кода:
$inifile = "c:\temp\config.ini"
$readini = Get-IniContent $inifile
$User = $readini["ServiceAccount"].UserID
Другой полезной функцией для ежедневного применения является Save-CSV2Excel
. Как
можно догадаться из её названия, она преобразовывает файл CSV в форматированный Excel:
Save-CSV2Excel -CSVPath C:\data\auditmbx.csv -Exceloutputpath c:\data\audit.xlsx
Существенными в мире системного администратора являются случайным образом вырабатываемые сложные пароли. Итак, зачем
применять Web или некий инструмент для их выработки когда вы можете выполнить это при помощи своей функции
New-RandomPassword
из нашего модуля vsadmin
?
Рассмотрите это пример на Рисунке 5-17:
New-RandomPassword – NumberofChars 9
Он кодируется при помощи 5, 9, 14 и 20.
И последнее, но не по степени значимости, я делюсь некоторыми функциями Active Directory, которые не доступны сразу после установки модуля Active Directory.
Get-ADGroupMembersRecursive способна рекурсивно выделять участников групп, однако требуется и сам модуль AD:
Get-ADGroupMembersRecursive -Groups "Test Nested Group"
Дополнительно с этой функцией вы можете ознакомиться на https://techwizard.cloud/2020/10/24/get-ad-group-members-recursively/.
Get-ADUserMemberOf способна проверять является ли некий пользователь участником группы или нет, но при этом требуется сам модуль AD:
Get-ADUserMemberOf -User "User" -Group "Group"
Она возвращает true
когда указанный пользователь участник группы или в противном
случае она возвращает false
. Дополнительно с этой функцией вы можете ознакомиться на
https://techwizard.cloud/2020/12/31/check-if-ad-user-is-member-of-group/.
В данной главе вы изучили как применять модули в PowerShell. Модули, они как батарейки. Без их сложно составлять сценарий
любого продукта при помощи PowerShell. Я также поделился модулем шпаргалки системного администратора
(vsadmin
), который обладает большим числом ежедневно применяемых функций/
командлетов.