Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #91, ИЮЛЬ 2006 г.

Могучий шелл

Naked Snake

Хакер, номер #091, стр. 091-040-6


Name Capabilities Drives

---- ------------ ------

Alias ShouldProcess {Alias}

Environment ShouldProcess {Env}

FileSystem Filter, ShouldProcess {C, D, E, F..

Function ShouldProcess {Function}

Registry ShouldProcess {HKLM, HKCU}

Variable ShouldProcess {Variable}

Certificate ShouldProcess {cert}

Скажем, если ты хочешь изучить содержимое реестра, то должен переключиться на него с помощью команды Set-Location HKLM:\. Теперь просмотри список ветки HKLV с помощью ls. Вывод команды отображен на скрине — глянь туда. Теперь ты можешь творить с реестром, что хочешь. Его ветки теперь для тебя, как папки, и ты можешь бродить по ним через «cd». А значения ключей легко выводятся cat’ом. Это, кстати, одна из самых мощных и полезных фич PowerShell'a.

Это только начало приключений

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

Эти фишки помогут тебе в настройке автоматики

PowerShell предоставляет удобные средства по работе с системными службами. Следующая команда, к примеру, выводит список работающих служб:

get-service | where-object { $_.Status -eq "Running" }

Внимательно изучи ключи командлета set-service. С его помощью легко меняются любые параметры служб, например тип запуска:

set-service <имя_службы> -StartupType Manual

Новый шелл от Microsoft имеет в своем арсенале десятки служебных переменных, использованием которых не стоит пренебрегать. Например, переменная $LASTEXITCODE всегда содержит код завершения последней запущенной программы. Заюзать ее проще простого. Например, команда ping, в случае недоступности удаленного хоста, возвращает в качестве кода завершения единицу, а в случае получения ICMP-ответа (то есть удачного подключения) — ноль. Таким образом, написание простейшего скрипта для мониторинга работоспособности удаленного хоста сводится к одной-единственной конструкции if-else.

Удаленное администрирование

Народные умельцы уже написали клиент-серверный скрипт, позволяющий работать в PowerShell на расстоянии. Разработка доступна на сайте http://mshforfun.blogspot.com/2006/03/powershell-remoting-beta-and-future.html и весит аж 300 Кб. Сейчас расскажу, как его поставить. Выкачивай архив, распаковывай и запускай в PowerShell. Переходи в папку с сервером (PowerShellRemoting\server) и запускай инсталляционный скрипт: ./'install.ps1'. Не забудь одну важную вещь. В новом шелле есть такая фича, как execution policies, которая контролирует режимы запуска скриптов. По умолчанию ни один сценарий у тебя не запустится (это для твоей же безопасности сделали, наученные горьким опытом, Script Host). Чтобы активировать возможность запуска скриптов, необходимо выполнить команду Set-ExecutionPolicy RemoteSigned, устанавливающую разрешающий режим. Подробности по теме описаны в справке: Get-Help about_signing | more. Теперь вернемся к установке. После подтверждения установки, в системе обозначится новая служба PowerShellRemoting — ее необходимо запустить, а также настроить на автоматический запуск. Это делается через «Панель управление -> Администрирование -> Службы». По умолчанию шелл принимает подключения от администратора с локалхоста, а для того, чтобы разрешить доступ другим клиентам, необходимо исправить файл user.xml. Ну а дальше? Дальше надо аналогично установить клиентскую часть и радоваться жизни, подключаясь к удаленному компу: ./'Start-Remotehost.ps1'.

Назад на стр. 091-040-5  Содержание  Вперед на стр. 091-040-7