PowerShell — мощная командная оболочка и язык сценариев, разработанный Microsoft для управления и автоматизации задач в операционных системах Windows. Данный инструмент позволяет выполнять административные команды, управлять файлами, службами, сетями и пользователями через текстовые команды или скрипты.
Основное преимущество PowerShell — это возможность работать с объектами .NET, что делает его более гибким по сравнению с традиционными командными оболочками. PowerShell используется как на локальных машинах, так и для управления удалёнными серверами, включая Windows Server Core, что особенно важно в средах без графического интерфейса. Он поддерживает как интерактивную работу, так и написание сложных скриптов для автоматизации административных процессов.
Давайте рассмотрим несколько примеров использования PowerShell в Windows Server Core 2019.
Примеры использования PowerShell
При подключении по RDP к виртуальной машине, работающей под управлением Windows Server Core 2019, по умолчанию вы попадаете в интерфейс командной строки. Чтобы запустить PowerShell, необходимо выполнить команду powershell
.
О том, что PowerShell запущен, говорит наличие символов PS
в начале строки. Здесь вы можете запустить какую-либо команду PowerShell. Например, для вывода на экран версии данной оболочки используйте команду:
$PSVersionTable.PSVersion
Автоматизация резервного копирования данных
Если есть необходимость создания PowerShell-скрипта, то в этом случае удобно использовать текстовый редактор Notepad. По умолчанию Notepad предустановлен в Windows Server Core на виртуальных серверах UltraVDS.
Для запуска NotePad наберите в оболочке PowerShell команду:
notepad
В качестве примера разберём создание скрипта для автоматизации резервного копирования данных. В данным случае содержимое скрипта выглядит следующим образом:
# Путь к каталогу с исходными данными
$sourcePath = "C:\DATA"
# Путь к каталогу для резервного копирования
$backupPath = "C:\BACKUP"
# Создание каталога с текущей датой
$date = Get-Date -Format "yyyy-MM-dd"
$destination = Join-Path $backupPath $date
New-Item -Path $destination -ItemType Directory
# Копирование данных
Copy-Item -Path $sourcePath -Destination $destination -Recurse
# Удаление старых резервных копий старше 7 дней
Get-ChildItem $backupPath | Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Recurse -Force
Здесь каталог C:\DATA
будет сохраняться в папке C:\BACKUP
с именем, соответствующим текущей дате. Также скрипт будет удалять из каталога C:\BACKUP
данные, время создания которых старше семи дней.
Затем сохраните скрипт, например, в папку C:\SCRIPTS
под именем script1.ps1
.
Далее перейдите в каталог C:\SCRIPTS
:
cd C:\SCRIPTS
После чего следующей командой запустите скрипт:
.\script1.ps1
Мониторинг ресурсов сервера
Также PowerShell можно использовать для мониторинга ресурсов, таких, например, как загрузка процессора.
В данном случае команда, содержащаяся в скрипте, использует командлет Get-WmiObject
для получения информации из класса Win32_Processor
, который предоставляет данные о процессоре на сервере.
# Мониторинг использования процессора
Get-WmiObject -Class Win32_Processor | Select-Object -Property Name,
LoadPercentage
При этом командлет выводит на экран два свойства:
Name
— отображает название процессора;LoadPercentage
— показывает процент загрузки процессора на данный момент.
Сохраните скрипт под именем, например, script2.ps1
и запустите его следующей командой:
.\script2.ps1
В нашем случае видно, что процессор севера Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz
имеет текущую загрузку 2%:
Создание задач в Task Scheduler
Планировщик задач Windows Server Core позволяет автоматически запускать PowerShell-скрипты в указанное время или при выполнении определённых условий.
Например, вы можете создать задание для запуска скрипта script1.ps1
:
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-File C:\SCRIPTS\script1.ps1'
Ежедневно в 03:00:
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
И при помощи командлета Register-ScheduledTask
зарегистрировать задание с именем BackupTask
в Планировщике задач:
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "BackupTask" -Description "Daily Backup Task"
Результат выполнения этих трёх команд — создание в Планировщике нового задания:
Управление пользователями
С помощью PowerShell можно быстро создать пользователя, а также управлять учётными записями в Active Directory или на локальном сервере.
Так выглядит пример создания нового пользователя с именем Your-User
и паролем Password123
с последующим добавлением данной учётной записи в группу Administrators
:
# Создание нового пользователя
New-LocalUser -Name "Your-User" -Password
(ConvertTo-SecureString "Password123" -AsPlainText -Force)
# Добавление пользователя в группу
Add-LocalGroupMember -Group "Administrators" -Member "Your-User"
На скриншоте ниже — результат работы такого скрипта:
Заключение
Таким образом, рассмотрев некоторые примеры использования PowerShell, мы увидели, что данная командная оболочка — довольно мощный инструмент для автоматизации административных задач на Windows Server. PowerShel позволяет эффективно управлять серверами и автоматизировать процессы, например, резервное копирование или управление пользователями.
Очевидно, что PowerShell особенно эффективен в Windows Server Core, где использование графической оболочки сведено к минимуму.