Ошибка: Failed to parse the Currency Converter XML document.
$163 864.43


Ошибка: Failed to parse the Currency Converter XML document.
$48 648.88


Ошибка: Failed to parse the Currency Converter XML document.
$1 351.02


10 полезных приёмов при работе с оболочкой PowerShell

Если вы недостаточно хорошо освоили PowerShell, то наверняка не стремитесь применять этот инструмент в повседневной работе. Однако дананя оболочка является ядром таких систем, как Exchange 2007, Windows Server 2008 и SQL Server 2008. Поэтому любому администратору нужно научиться использовать её огромные возможности.

В этой статье я постараюсь описать несколько полезных и удобных приёмов работы с PowerShell. К тому же умение пользоваться командной строкой, в отличие от щелканья кнопками мыши, всегда производит впечатление на окружающих.

Замечание: Будьте осторожны, предельно осторожны


Название этого инструментария точно передает его суть. PowerShell (мощная оболочка) способна изменять конфигурацию системы кардинальным образом, причем как в хорошую, так и в плохую сторону. Поэтому эксперименты лучше проводить в тестовом режиме. Также не стоит забывать о применении параметра “-confirm” для проверки конфигурации перед запуском тех или иных команд.

Отчет обо всех установленных USB-устройствах

PowerShell осуществляет доступ к технологии централизованного управления системой Windows Management Instrumentation (WMI). При помощи PowerShell администратор может дать команду WMI произвести поиск всех установленных на локальную или удаленную машину USB-устройств:


gwmi Win32_USBControllerDevice –computername SERVER1 |fl Antecedent,Dependent

Фильтр вернёт список главных и зависимых USB-устройств компьютера SERVER1. Если не задействовать фильтр, то можно получить полный список подключенного к машине USB-оборудования. Это полезно для ведения регулярных отчетов об установленных лицензионных USB-устройствах, где будут отображаться данные о подключении каждого объекта.

Использование PowerShell вместо коммандера CMD

Тот факт, что для решения одних и тех же задач оболочку PowerShell можно использовать вместо командной строки DOS, поможет несколько облегчить процесс обучения и привыкнуть к новому интерфейсу. К сожаленью, строка выполнения (run) не позволяет запускать трехбуквенные команды, например cmd. Но с этой задачей легко справляется PowerShell. Можно назначить специальную команду для быстрого вызова коммандера, например Ctrl + Shift + P.

Использование PowerShell для закрытия процессов вместо Диспетчера задач

Если какая-либо служба Windows не отвечает на запрос о прекращении работы, то ее можно закрыть при помощи PowerShell. Оболочка наделена эквивалентной Диспетчеру задач функцией остановки процессов. Например, для того, чтобы остановить процесс BadThread.exe, нужно проделать следующее:

get-process BadTh*

Результат будет таким:
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
28 4 — 210844 — 201128 — 163 25.67 2792 BadThread

После того, как идентификационный номер процесса будет определён, его можно закрыть, введя команду:

stop-process –id 2792

После чего функция BadThread будет остановлена и теперь опять же с помощью PowerShell можно попробовать заново запустить соответствующую службу.

Использование команды PSDrive для отображения списка дисков и не только

Команда PSDrive позволяет не только просматривать локальные, удаленные и съемные диски, но и получить доступ к улею реестра HKEY_LOCAL_MACHINE. Для этого нужно задействовать параметр HKLM:

PS C:> cd HKLM:
PS HKLM:/>

В результате откроется улей реестра, где администратор может просматривать и даже удалять любые объекты.

Назначение NTFS полномочий — возможна ли рекурсия?

Управление правами доступа в файловой системе NTFS — отдельная тема для разговора, однако PowerShell дает возможность назначения полномочий NTFS для аудита доступа пользователей и отображения списков управления доступом (Access Control Lists) в рамках настройки конфигурации безопасности. Это отличное программно реализуемое средство ведения регулярной отчетности, которое также можно использовать для анализа частных случаев возникновения неисправностей. К примеру, зададим следующий цикл:

PS E:>Get-Acl N:Data

Система выдаст отчёт о правах доступа пользователя к той или иной директории (одного, но не всех пользователей). Само по себе это не так уж и впечатляет, поскольку отчёт касается лишь одного каталога, но если вы хотите включить рекурсию для целой папки, можно применить иную стратегию. Для той же директории (N:Data) введём в строке оболочки PowerShell команду Get-ChildItem (cmdlet) в сочетании с другой командой Get-Acl:

PS E:>Get-ChildItem N:Data -recurse | Get-Acl

В результате будет выдан список контроля доступа пользователей к содержимому данного каталога. Дело в том, что команда Get-ChildItem проводит инвентаризацию объектов файловой системы, а Get-Acl выводит результаты этой инвентаризации по каждому объекту.

При желании можно сохранить этот отчёт в файле разделяемых запятыми значений, для чего нужно будет ввести: “| export-csv c:filename.csv” в конце команды cmdlet. Для сохранения отчёта в текстовом файле — “> C:filename.txt” в конце той же команды. Имейте в виду, что при использовании параметра –recurse, функция осуществит проверку всей указанной директории. Поэтому будьте осторожны, применяя его для инвентаризации больших каталогов или целой сети.

Приемущества PowerShell 2.0

Оболочка PowerShell 2.0 встроена в платформу Community Technology Preview (CTP) и снабжена отменным графическим интерфейсом Graphical PowerShell. Сценарии оболочки можно сохранять в файлы с расширением .ps1, благодаря чему становится возможно осуществлять удобное управление, импорт и обмен ими между системами. На изображении A показаны приведённые выше примеры назначения NTFS-полномочий в режиме графического интерфейса.

Вам необходиом будет скофигурировать политики исполенения (execution policy). Пример конфигурирования политики:

PS C:>Set-ExecutionPolicy Restricted (check only)
PS C:>Set-ExecutionPolicy AllSigned (most secure)
PS C:>Set-ExecutionPolicy RemoteSigned (medium secure)
PS C:>Set-ExecutionPolicy Unrestricted (least secure)

Решив опробовать PowerShell 2.0 в деле, имейте в виду, что вам понадобится пакет WS-MAN v1.1, а для работы с графическим интерфейсом необходим набор инструментов Microsoft .NET Framework 3.0.

Комбинации клавиш для работы в графическом интерфейсе Graphical PowerShell

Если вы работали с SQL Query Analyzer, то вам уже знакомы некоторые из следующих сочетаний клавиш. В графическом интерфейсе Graphical PowerShell можно выделить одну или несколько строк и запустить их, нажав F5. А при редактировании сценария ускорить процесс помогут знакомые комбинации: Ctrl + S для сохранения, Ctrl + Z для отмены предыдущей операции, Ctrl + C для копирования и Ctrl + V для вставки.

Выполнение длительных процессов в фоновом режиме

Если вызванная командой cmdlet процедура работает слишком долго, PowerShell способна переключить её в фоновый режим. Можно одновременно запустить несколько процессов, которые будут выполняться столько, сколько им потребуется. Переключение в фоновый режим осуществляетcя, если в начале команды перед названием процесса ввести start-psjob. Можно послать запрос для выявления статуса всех выполняемых операций:

PS C:>get-psjob

PowerShell выдаст таблицу, где отображён ход всех процессов, при этом каждой сессии будет присвоен свой идентификатор. На изображении B показана ошибка в одном из процессов.

Одно небольшое замечание по PowerShell 2.0: перед её использованием необходимо настроить политику выполнения команд через обычную неграфическую оболочку PowerShell. Конфигурация одной из политик запуска:

Для выключения прерванного процесса введите команду:

PS C:>remove-psjob 9

Создание временных маркеров в отчётах PowerShell

При помощи временных меток в выдаваемых PowerShell отчётах можно определить, как долго длилась та или иная операция, а также регистрировать сценарии. Очень полезная функция для проверки сценариев в Graphical PowerShell. Чтобы создать временной маркер, введите в нужном файле .ps1 одной строкой любую из следующих команд:
Command
«$(Get-Date -format g) Start logging»
«$(Get-Date -format F) Start logging»
«$(Get-Date -format o) Start logging»              Output example
2/5/2008 9:15 PM
Tuesday, February 05, 2008 9:15:13 PM
2008-02-05T21:15:13.0368750-05:00

Существует множество форматов команды Get-Date, но этих трёх параметров обычно бывает достаточно для выполнения всех операций, связанных с временными метками

Пошаговый просмотр результатов

Многие команды в PowerShell выдают мгновенные отчёты, которые невозможно просмотреть на экране, если не экспортировать их в отдельный файл. Для возвращения результатов выполнения команд вновь используем Get-ChildItem. Просматривать отчёт станет значительно удобнее, если каждая новая его строка будет появляться через полсекунды после предыдущей. Для этого создадим функцию EasyView:

function EasyView { process { $_; Start-Sleep -seconds .5}}

Теперь для вызова функции EasyView достаточно ввести её имя после вертикального разделителя в конце команды Get-ChildItem:

Get-ChildItem N:Data | EasyView

Для этой функции мы настроили отображение каждой последующей строки отчёта через 0,5 секунды. При желании можно указать в значение в миллисекундах.

Автор: Rick Vanover

 

Интересное

Типизированные файлы
Типизированный файл — это файл в котором записанны идентичные структуры. Например любой файл можно считать файлом байтов — т.е. можно его читать байт за байтом, можно перейти сразу к любому...
Подробнее...
Сделать первый небольшой...
С чего начать?Я думаю, сейчас самое время перейти от слов к делу — сделать первый небольшой скрипт.Возьмем для примера следующую задачу. Нужно сделать базу с книгами, которые появились или скоро...
Подробнее...
SSI - что, когда, как?
Основным, простейшим, но в то же время чрезвычайно мощным инструментом поддержки больших наборов документов является SSI (Server-Side Includes — включения на стороне сервера). Если кто-то из...
Подробнее...
Firefox: Настройка RSS
Много слышал об RSS и даже несколько раз пытался пользоваться специальными программами для чтения. Но устанавливать дополнительное ПО не хочется, тем более что в Firefox есть встроенный клиент...
Подробнее...
Протоколы интернет
Прародителем сети интернет была сеть ARPANET. Первоначально её разработка финансировалась Управлением перспективного планирования (Advanced Research Projects Agency, или ARPA). Проект стартовал...
Подробнее...
Linux Format
Linux Format Номер 1 Январь 2007 Автор: Linux Format Формат: PDF
Подробнее...
Выпадающие меню с помощью CSS
Каждый, кому хоть раз приходилось создавать выпадающие меню, знаком с тем, какое количество скриптов требуется для этого. Между тем, используя грамотно структурированный HTML-код и несложные...
Подробнее...
База данных методами...
В статье рассматривается работа с бинарными файлами из Delphi, а так же использование Object Pascal для управления записью, чтением и изменением собственных типов файлов.Постановка задачи:...
Подробнее...
Средства восстановления...
Чтобы ни говорили про повышенную надежность Windows 2000/ХР, иногда она все же подводит. Правда, по сравнению со своими предшественницами Windows 9x/Me это случается гораздо реже. А поскольку...
Подробнее...
CSS дизайн: с учетом контекста
Веб-стандарты обещают нам улучшенную поддержку мультимедиа: возможность оптимизировать контент под возможности компьютерных экранов, портативных устройств, принтеров, проекторов, и подобных...
Подробнее...