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


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


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


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

 

Интересное

Как узнать информацию о...
Вы, возможно, видели нестандартные дельфийские компоненты, позволяющие сделать лог системы. Сейчас мы самостоятельно реализуем что-нибудь не хуже.Прежде всего, где хранится эта самая системная...
Подробнее...
Дата по русски
Скрипт, который мы сейчас рассмотрим, позволяет вывести на экранпосетителя дату в формате русского языка. Сразу предупреждаю,что реализация алгоритма этой задачи не самая лучшая.Но –...
Подробнее...
Десять советов по...
Использование всевозможных технологий удаленного администрирования рабочих станций позволяет существенно сэкономить время и деньги. Ниже приводятся некоторые советы, которые помогут читателям в...
Подробнее...
Использование сессий в PHP
Очень часто при написании скриптов на php необходимо хранить некоторую информацию о посетителе в течение всего сеанса его работы. Типичным примером такой ситуации является необходимость...
Подробнее...
Система адресации в Интернете
Каждый человек, живущий на Земле, имеет адрес, по которому его в случае необходимости можно разыскать. Думаю, ни у кого не вызовет удивления то, что каждая работающая в Интернете машина также...
Подробнее...
Использование сессий в PHP
Очень часто при написании скриптов на php необходимо хранить некоторую информацию о посетителе в течение всего сеанса его работы. Типичным примером такой ситуации является необходимость...
Подробнее...
Планирование сайта в целом
Прежде, чем воплощать страничку «в битах и байтах», неплохо было бы представить, какой Вы ее хотите видеть. А еще лучше сделать эскиз на бумаге или в том же «Paint»-e, если Вам удобнее...
Подробнее...
Конфиденциальные сведения...
Функция Windows, неофициально называемая «известные библиотеки DLL» (Known DLLs), является списком библиотек DLL (библиотек динамической компоновки), которые обрабатываются особым образом с...
Подробнее...
Настройка роутера с...
В данной статье мы расскажем о настройке роутера на базе FreeBSDвыполняющего роль шлюза в инернет с установкой firewall-a, иподдерживающем статическую arp таблицу mac адресов в локальной сети.Речь...
Подробнее...
Загрузка FreeBSD 5.0 на...
Введение За последние годы порт FreeBSD-sparc64 привлек значительное внимание разработчиков. За годы было сделано многое; тем не менее, еще много предстоит сделать в области поддержки устройств и...
Подробнее...