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

Могучий шелл

Naked Snake

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


Фас, профиль!

Все, что находится в файле-профайле, исполняется со стартом PowerShell автоматически. Этот файл может лежать в таких местах:

1) "\Documents and settings\All users\Documents\PsConfiguration\profile.ps1"

2) "\Documents and settings\All users\\Documents\PsConfiguration\<shellId>_profile.ps1"

3) "Мои документы\PsConfiguration\profile.ps1"

4) "Мои документы\PsConfiguration\<shellId>_profile.ps1"

Что пихать в профайл, я думаю, понятно: настройки приглашения, установку алиасов для команд, выполнение каких-нибудь будничных операций, не требующих твоего вмешательства. Приведу небольшой пример кода от гиков с http://mshforfun.blogspot.com/:

function prompt

{

$host.ui.rawui.WindowTitle = "Files: " + (get-childitem).count + " Process: " + (get-process).count

Write-Host ("PS " + $(get-location) +">") -nonewline -foregroundcolor Magenta

return " "

}

Если добавить эту функцию в свой профайл, то приглашение, которое выводит текущий путь, окрасится в красивый фиолетовый цвет, а в заголовке окна покажется количество элементов в текущем каталоге и число запущенных процессов. Вообще, если немного повозится с тюнингом профайла, то можно нехило поднатаскаться в создании скриптов и заметно упростить использование шелла. Например, никто не мешает тебе подсвечивать разные типы файлов соответствующими им цветами. Это не только радует глаз, но и заметно упрощает навигацию по файловой системе. А реализуется проще простого:

$list = get-childitem | sort-object

foreach ($objItem in $list) {

if ($objItem.Attributes -contains "Directory") { $fgc="cyan" }

elseif ($objItem.Extension -eq ".ps1") { $fgc="blue" }

elseif ($objItem.Extension -eq ".exe") { $fgc="green" }

elseif ($objItem.Extension -eq ".zip") { $fgc="red" }

elseif ($objItem.Extension -eq ".rar") { $fgc="red" }

else { $fgc="gray" }

write-host $objItem.Name, $objItem.Length, $objItem.LastWriteTime -foregroundcolor $fgc

}

Формальное описание: получаем содержимое директории как массив, парсим его с помощью конструкции if/elseif/else, задаем значение переменной $fgc. Впоследствии, когда строка будет выводиться на экран, с ее помощью будет назначен цвет текста.

Интерфейс управления системой

А теперь с помощью функции получим список, установленного в системе оборудования:

Function Show-InstalledSoftware {

$prod = Get-WmiObject win32_product

$prod| sort name |ft Name, Version, Vendor, Installdate -a

}

set-alias sis Show-InstalledSoftware

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