Глава 6
Set colListOfServices = GetObject("winmgmts:").ExecQuery _
("Select * from Win32_Service Where State = 'Stopped' and _
StartMode = 'Automatic'")
For Each strService in colListOfServices
strService.StartService()
Next
Первая строка кода создает коллекцию объектов, удовлетворяющих условию
выборки, заданному в WQL-запросе. Этот запрос выбирает все службы, для ко-
торых установлен автоматический режим запуска и которые в настоящий мо-
мент остановлены. Пятая строка кода организует цикл, выполняющий метод за-
пуска служб, найденных на предыдущем этапе.
Для этого сценария можно установить автоматический запуск через определен-
ные промежутки времени, чтобы гарантировать работу всех служб компьютера.
В свойствах службы есть опция восстановления, в которой можно задать пара-
метры перезапуска службы после ее аварийной остановки. Однако если служба
по тем или иным причинам не стартовала при запуске системы или была оста-
новлена вручную, то автоматически она также не будет запущена. Приведенный
в примере код позволяет автоматически находить такие службы и запускать их.
PowerShell
PowerShell представляет собой средство, разработанное Microsoft для автоматиза-
ции различных задач и состоящее из интерпретатора и языка высокого уровня.
PowerShell входит в состав Windows 7/8/10 и Windows Server 2008/2012/2016, но
также может быть загружен и для предыдущих версий. Язык PowerShell реализован
на Microsoft .NET Framework и интегрирует в себя доступ к WMI, COM и ADSI.
Сценарии PowerShell составляются из
командлетов
(cmdlet). Командлет объединя-
ет в себе команду и объект, над которым она выполняется, и обычно называется по
принципу глагол-объект. Например, командлет Get-Content возвратит (
get
) содер-
жимое (
content
) того элемента, который будет указан в параметрах. Так, команда
Get-Content c:\test.txt
выведет на экран содержимое файла
c:\test.txt
.
PowerShell поддерживает перенаправление вывода, которое получило в его интер-
претаторе название
конвейера
. Поддерживаются регулярные выражения, обработка
условий — в общем, все те функции, которые присущи современным языкам про-
граммирования.
Например, следующий сценарий выведет на экран список созданных в течение по-
следнего дня файлов:
get-childitem c:\ -R |? {$_.creationtime -gt $(get-date).adddays(-1)}
Первый командлет возвращает список всех файлов на диске
С:
(ключ
R
выполняет
рекурсивный поиск), полученные данные передаются на обработку, сценарий вы-
бирает параметр
creationtime
(дату создания) и сравнивает его с текущей датой
минус 1 день. Этот сценарий можно модифицировать — например, изменить маску
Управление информационной системой
273
и выбирать файлы журналов (
-Filter*.log
), сменить условие (меньше —
lt
) и пе-
ренаправить вывод на команду удаления (
% {del
$_}
). Таким образом можно авто-
матически удалять с компьютера устаревшие журналы, если эту команду настроить
на автоматическое выполнение.
Помимо командной строки интерпретатора в последних версиях PowerShell появи-
лась и графическая среда — интегрированная среда сценариев ISE (Integrated Script
Environment) Windows PowerShell. Это приложение, в котором можно выполнять
команды PowerShell, создавать, тестировать и отлаживать скрипты с использовани-
ем удобного графического интерфейса (рис. 6.12).
Рис. 6.12.
Интегрированная среда сценариев PowerShell (Windows Server 2016)
Обратите внимание, что, начиная работать с PowerShell, желательно настроить
личный профиль — сценарий, который исполняется при каждом открытии интер-
претатора. В этом профиле можно определить такие настройки, как локальный
путь, параметры безопасности, синонимы (сокращения для часто употребляемых
команд) и т. п.
274
Do'stlaringiz bilan baham: |