Удивительная мощь скриптов Microsoft PowerShell

Опубликовано: 16 Марта, 2023
Удивительная мощь скриптов Microsoft PowerShell

Microsoft PowerShell — отличная платформа для сценариев. Microsoft обеспечивает поддержку PowerShell практически для всех ролей и функций Windows Server. Вы можете использовать PowerShell для автоматизации повторяющихся задач, а также легко выполнять задачи с помощью командной строки, которые вы обычно выполняете с помощью инструментов с графическим интерфейсом. Например, в производственной среде, если вам нужно проверить состояние исправлений на серверах Windows, использование сценария PowerShell намного проще, чем подключение к каждому серверу по отдельности и последующая проверка состояния исправлений. Я постоянный пользователь PowerShell и за 18 лет работы в ИТ разработал тысячи сценариев PowerShell.

До PowerShell основным языком сценариев для выполнения операционных задач Windows был язык сценариев Visual Basic. Хотя сценарии Visual Basic все еще существуют, и многие ИТ-администраторы по-прежнему предпочитают использовать сценарии VB, стоит отметить, что PowerShell снижает сложность кода. Например, чтобы проверить службы на компьютере с Windows, вам нужно будет написать код VBScript в блокноте, сохранить файл как.VBS, а затем выполнить его с помощью исполняемого файла хоста CSCript. Но с помощью PowerShell вы можете использовать простой командлет Get-Service, который поможет вам быстро получить список служб с компьютера Windows. Если вам нужно сохранить вывод в файл с помощью сценария VB, вам снова потребуется написать кучу кода в сценарии VB, который включает в себя открытие файла, а затем запись содержимого в файл. PowerShell просто не требует, чтобы вы открывали файл, прежде чем содержимое, полученное командлетом PowerShell, можно будет записать в файл. Все, что вам нужно сделать, это использовать командлеты «Export-CSV» или «Add-Content».

Командлеты: строительные блоки сценариев PowerShell

PowerShell предлагает командлеты (произносится как «командные»), иногда называемые инструментами командной строки, которые можно использовать для получения информации об операционной системе, приложениях, установленных на компьютере с Windows, информации о сети, статусе исправлений на компьютере с Windows и многом другом. более. Важно отметить, что командлеты PowerShell написаны на.NET и используют классы.NET для выполнения необходимых задач. Если вы хотите узнать, какие командлеты PowerShell доступны на локальном компьютере, выполните следующую команду:

Get-команда

Get-Command — это командлет PowerShell, который извлекает командлеты, функции, фильтры и сценарии PowerShell, установленные на локальном компьютере. Приведенная выше команда запрашивает все модули PowerShell, установленные на локальном компьютере. Если вам нужно увидеть все команды, установленные на локальном компьютере по порядку, выполните эту команду:

Командлет Get-Command – Type | Sort-Object –Свойство существительное |FT –GroupBy существительное

Три типа операций PowerShell

Изображение 1728
С помощью PowerShell вы можете выполнять три типа операций. Это Get, Set и Remove. Любой командлет PowerShell, начинающийся с «Get», обычно используется для получения информации из компонентов Windows. Например, командлет Get-ADUser выполняет операцию чтения базы данных Active Directory, чтобы получить информацию о пользователе. Несколько примеров использования командлета Get-ADUser PowerShell показаны ниже:

Get-ADUser –Filter * -SearchBase «OU=TestUsers,DC=TechGenix,DC=Com»

Приведенная выше команда извлекает все учетные записи пользователей, расположенные в организационном подразделении, тогда как приведенная ниже команда извлекает свойства, связанные с одним пользователем Active Directory:

Get-ADUser – Идентификация JohnThomas – Свойства *

Командлеты PowerShell, начинающиеся с «Set», используются для редактирования информации о компонентах Windows. Например, с помощью Set-ADUser вы можете выполнять различные операционные задачи, как показано в приведенных ниже командах:

Set-ADUser –Идентификация JohnThomas –HomeFolder \Server1\%UserName%

Приведенные ниже команды устанавливают свойство почты для пользователя JohnThomas.

$ThisUser = Get-ADUser –Identity JohnThomas –Properties Mail
$ThisUser.Mail = [электронная почта защищена]
Set-ADUser-Instance $ThisUser

Любые командлеты PowerShell, начинающиеся с «Удалить», используются для выполнения операций удаления. Например, Remove-ADUser можно использовать для удаления пользователя Active Directory, как показано ниже:

Remove-ADUser – Идентификация JohnThomas

Объединение командлетов PowerShell

Одной из лучших функций PowerShell является возможность объединения двух или более командлетов PowerShell в одну команду PowerShell. Такие команды иногда называют однострочными командами PowerShell. Например, если вам нужно удалить все отключенные учетные записи пользователей из Active Directory, вы можете объединить командлеты PowerShell Search-ADAccount и Remove-ADUser, как показано в приведенной ниже команде:

Search-ADAccount –AccountDisabled | Где {$_.ObjectClass –eq «Пользователь»} | Remove-ADUser

Как видно из приведенной выше команды, командлет PowerShell Search-ADAccount выполняет поиск по всему активному каталогу для поиска отключенных учетных записей, а затем с помощью оператора канала (|) вы указываете Remove-ADUser выполнить операцию удаления только для пользователей, которые извлекаются с помощью Search-ADAccount.

Псевдонимы PowerShell

Хотя многие командлеты PowerShell легко читать и использовать, PowerShell также предоставляет функцию, называемую псевдонимом PowerShell. PowerShell достаточно умен, чтобы завершить имя командлета PowerShell нажатием клавиши Tab. Если вам трудно вспомнить названия командлетов PowerShell, вы можете создать псевдонимы PowerShell. Например, вы можете создать псевдоним для командлета PowerShell Get-MailBoxStatistics с помощью следующей команды:

New-Alias ShowMB Get-MailBoxStatistics

Когда вы вводите «ShowMB» в окне PowerShell, PowerShell ищет командлет, связанный с псевдонимом ShowMB, и затем выполняет его.

Сохранение информации в файле CSV

Когда дело доходит до сохранения информации в файле CSV, PowerShell экономит много времени на написании сценариев. PowerShell предоставляет командлет «Export-CSV», который можно использовать с любыми другими командлетами PowerShell. По умолчанию любая выполняемая вами команда PowerShell отображает результирующую информацию в командном окне PowerShell, если вы не добавите Export-CSV в конец команды, как показано в приведенной ниже команде:

Get-ADUser –Filter * -SearchBase «OU=TestUsers,DC=TechGenix,DC=Com» | Экспорт-CSV C:TempAllUsersInAnOU.CSV

Обратите внимание, что в приведенной выше команде вы просто добавляете «Export-CSV» в конце команды, чтобы экспортировать вывод в файл CSV.

Как видите, сценарии PowerShell сокращают время, необходимое для выполнения повседневных операционных задач. PowerShell может выполнять три оперативные задачи; Get, Set и Remove, и 97 процентов командлетов PowerShell начинаются с этих трех слов, чтобы легко определить функцию командлета PowerShell. Мы также объяснили, как легко объединить два командлета в одну команду, чтобы сделать ваши сценарии PowerShell более эффективными.