Windows PowerShell — это язык скриптов, предназначенный для автоматизации действий пользователя в среде ОС Windows. Ранее мы пытались автоматизировать выполнение рутинных операций с помощью BAT-файлов. Но этот способ уже отошел в прошлое, т. к. корпорацией Microsoft было предложено заменить эти файлы системой Windows PowerShell.
Эту разработку впервые интегрировали в последние ОС Windows. Для младших разработок операционных систем ее можно скачать и установить. Она разработана на базисе Microsoft NET Framework и тесно связана с ней. Дополнительно Windows PowerShell имеет доступ к WMI, COM и ADSI. Для удобств администраторов возможно и выполнение в командной строке распространенных команд, что создает единое окружение для выполнения разнообразных задач как в локальном виде, так и удаленно.
Разработчики снабдили оболочку специальным языком, соответствующим стандарту .NET Framework. В ней каждая команда называется «cmdlet» или «командлет». Командлет подразумевает функцию, выполняющую конкретную задачу. Это может быть извлечение содержимого из папки или обновление записи в реестре. Командлет может иметь определенные параметры, изменяющие и дополняющие результаты работы выполняемой команды.
Microsoft продвигает PowerShell как ключевой инструмент для администрирования в среде Windows, а большинство серверных ее продуктов просто невозможно эксплуатировать без применения командной строки. Продвинутому администратору жизненно необходимо знать хотя бы азы PowerShell. Представляем вам наиболее полезные команды PowerShell:
- Команда, которую администратор должен знать, это — Get-Help. Этот командлет выдает справку для всех остальных команд. Воспользовавшись, например, командой строкой Get-Help -Name Get-Process, можно узнать точный синтаксис системной команды Get-Process. А введя командлет Get-Help -Name Get-* вы увидите список команд, содержащих глагол Get.
- По умолчанию в системе отключена функция выполнения сценариев. Это предотвращает выполнение вирусного кода. Управление выполнения сценариев возложено на команду Set-ExecutionPolicy. Она указывает на уровни безопасного выполнения сценариев:
- Restricted — запрещено выполнение сценариев, и это ограничение устанавливается по умолчанию, а команды выполнять нужно в ручном режиме.
- Unrestricted — выполняться могут любые без ограничений сценарии.
- Remote Signed — получено разрешение на действие любых сценариев, но только не на удаленных системах — они должны иметь подпись доверенного издателя.
- All Signed — могут выполняться только сценарии, имеющие подпись доверенного издателя.
- Если администратор начнет работу на чужом сервере, то ему нужно будет узнать политику выполнения сценариев. Воспользовавшись командой Get-ExecutionPolicy он узнает это.
- Get-Service — команда, выдающая список установленных системных служб. Если дополнить эту команду приставкой -Name и далее указать имя службы, то вы узнаете состояние указанной службы.
- Команды PowerShell помогут администратору максимально точно и объемно получить полезные сведения об установленной системе, а вот отправить этот отчет другому админу поможет команда ConvertTo-HTML. Она создаст HTML-отчет для отправки.
- Отчеты можно сохранять в удобном для проверки в Microsoft Excel виде — в формате CSV. Воспользуйтесь командой Export-CSV и сохраните файл с отчетом на компьютере.
- Ограничить объем сохраняемой отчетности из п.6 можно командлетом Select-Object. Этой командой вы можете указать необходимые свойства системы, которые попадут в файл с CSV-отчетом.
- Команда Get-EventLog используется для анализа синтаксиса журнала событий. Она имеет много параметров, но указав только -Log и название журнала любого приложения можно просмотреть его содержимое: Get-EventLog -Log «Название приложения».
- В отличии от Get-Service, показывающей все системные службы, команда Get-Process выводит список только запущенных в сейчас процессов в системе.
- Бывают случаи зависания процесса в работающей системе. Узнать имя этого процесса легко с применением команды Get-Process. Передав это имя в команду Stop-Process зависший процесс можно убить.
http://youtu.be/F9CHh71NVJk
В состав оболочки Windows PowerShell разработчики из Microsoft включили более 100-а команд: возможно и самостоятельное создание разнообразных команд пользователем, но необходимо при этом строго использовать стандарты, представленные .NET, такие как C# или Visual Basic .NET.
Команда представляется в виде «глагол-существительное». Это способствует легкому изучению, единообразию и расширению языка команд. При этом глагол предполагает совершаемое действие, а существительное указывает на объект, с которым будет произведено это действие . Командлет Get-ChildItem, например, читает список, содержащийся в контейнере или каталоге. Выполнить команду легко — достаточно ввести ее в строку команд Windows PowerShell и кликнуть по клавише ввода. Итог выполнения команды сразу покажется под строкой с выполняемой командой.
Оболочка с PowerShell поставляется потребителю с набором файлов, содержащих подробную справочную информацию. Для изучения языка и возможностей указанного продукта, вам нужно научиться пользоваться этим справочником. Получить список всех содержащихся команд в оболочке можно, вставив в командную строку командлет Get-Command. В выведенном списке вы увидите все доступные команды и синтаксис их ввода, но не увидите описание их возможностей. Для подробных сведений о каждой команде необходимо ввести командлет Get-Help. При ее выполнении вы сможете увидеть подробную справку только о ней самой. Получить описание конкретной команды можно, введя за командой Get-Help ее название.
Если после Get-Help ввести Get-Command, то он уже будет параметром для Get-Help и в списке будет выведены сведения, нужные командам для их функционирования. Системным администраторам часто приходится читать файлы с текстом. Тогда посмотрим команды с Get. Воспользуемся Get-Help Get. Мы увидим, что работу с файлами обеспечивает команда Get-Content. После выполнения командлета Get-Help с дополнительным параметром Get-Content, мы узнаем подробности об ее работе.
Мы попытались сделать первый шаги в Windows PowerShell и просмотреть справки о ее командах. Для изучения их действия необходимо время и желание. Эксперименты с параметрами команд, создание простых сценариев приблизит вас к свободному ориентированию в Windows PowerShell.
Power Shell является расширяемым средством автоматизации и выпускается в составе большого количества версий операционной системы Windows. Power Shell обеспечивает удобный доступ к ADSI, WMI и COM, а также делает возможным выполнение команд командной строки для создания такого единого окружения, которое позволило бы выполнять определенный ряд задач, как на локальных, так и на удаленных системах.
Благодаря представленным в Windows Power Shell операторам «-like», «-mutch», «-replace», даже люди, которые не слишком близко и хорошо знакомы с процессами программирования, смогут достаточно быстро и удобно сопоставлять строки и выполнять их замену. Также, следует заметить, что в командной строке достаточно интересно и просто экспериментировать с регулярными выражениями .NET, нежели в случае с использованием тех языков сценариев, которые являются традиционными.
Популярным направлением использования регулярных выражений можно назвать вывод строк в файл, что вполне очевидно. Это применимо для таких случаев, когда необходимо извлечь только определенную информацию с дальнейшим ее открытием в Блокноте. Понятно, что изначально можно извлечь не только то, что действительно необходимо, но и достаточное количество лишних и избыточных данных, а с помощью Power Shell, эта проблема решается достаточно просто. Например, с помощью команды
Get-Process | Out-File -FilePath D:\TMP\proclist.txt
можно направить список системных процессов в файл «proclist.txt», расположенный в папке «TMP» на диске «D».
Также, осуществляя рабочие операции с файлами, содержащими текст, может быть актуальной замена строки с использованием регулярных выражений и запись результатов в первоначальный файл. Приятным преимуществом является существующая возможность использования сценария для выполнения соответствующей замены строк сразу в нескольких разных файлах. К примеру, команда
Get-Item File.txt | Replace-FileString
-Pattern 'know' -Replacement ‘known’
заменит слово «know» на «known» в файле «File.txt».
Кроме того, Power Shell позволяет заменить типовой путь, на тот, который необходим в конкретной ситуации для определенной сети. В таком случае также невероятно удобна возможность применения сразу для нескольких сценариев.
В целом, работа со строками Power Shell подразумевает легкое обращение с такими необходимыми и востребованными операциями, как присваивание строк, соединение строк, повторение строк, соединение строк с разделами и без, разделение строки с разделами и без. Его безусловным преимуществом является простота в использовании и доступность даже для тех людей, которые не обладают огромным количеством знаний и опыта. Именно поэтому, достаточно большое количество пользователей считают Power Shell одним из самых оптимальных и приемлемых вариантов эффективной обработки строк.
Командлеты PowerShell
Windows PowerShell — расширенное средство автоматизации, разработанное Microsoft. Это расширение для ОС Windows, состоит из оболочки, имеющей интерфейс командной строки, и специального языка сценариев. Все это является неотъемлемым, встроенным компонентом операционной системы Windows и, начиная с Windows 7, обязательно поставляется вместе с ней. С помощью данного компонента администратору предоставляется возможность составлять сценарии для выполнения рутинных административных задач.
Основные командлеты PowerShell, с которыми следует ознакомиться в первую очередь:
GET-HELP. Первый и самый основной командлет — вызов справки. С его помощью вы сможете проверить правильность синтаксиса, просмотреть пример использования и подробное описание любого командлета PowerShell.
GET-CONTENT. Чтение содержимого файлов. Наиболее часто применяется новичками, пытающимися изучить PowerShell. Любой сможет прочитать файл, передав его командлету «Get-Content».
GET-SERVICE. Командлет перечислит вам все службы, имеющиеся на данном компьютере. Так-же возможно получить информацию о каждой конкретной службе или всех имеющихся службах. Так, например, вы сможете увидеть какие службы запущены и остановлены.
STOP-SERVICE и START-SERVICE. Остановка и запуск служб — очень важный этап работы администратора в Windows. Эти командлеты PowerShell упрощают администрирование, так как отпадает необходимость открытия консоли ММС. С помощью этих команд можно останавливать или запускать имеющиеся службы как на серверной части, так и на удаленных компьютерах.
GET-PROCESS. Вам необходимо знать, какие процессы запущены, как на сервере, так и на удаленном ПК? Этот командлет введет вас в курс всех событий. Вам будет предоставлена следующая информация: имя, ID процесса, путь к данному исполняемому файлу, название компании, версия файла и количество памяти, занятое процессом.
STOP-PROCESS. Командлет остановит указанный процесс, как на сервере, так и на удаленном компьютере. Он возьмет ID процесса или его имя и завершит данный процесс. Особо полезно принять такое решение в случае зависания программы, когда та не отвечает.
Переменные PowerShell
В среде сценариев PowerShell переменные являются фундаментальными составляющими. Переменные PowerShell очень отличаются от переменных в составе обработчика командных строк Cmd. exe. Там все переменные можно отнести к категории переменных сред и вызвать их с помощью команды интерпретатора Set. В интерпретаторе переменные среды состоят только из строк текста. Строка текста, а соответственно и переменная, может состоять из букв и цифр. Вопрос о интерпретации числа в переменной именно как числа, возлагается на программу, которая самостоятельно решает этот вопрос при считывании такой переменной среды для обработки.
Переменные, находящиеся в составе PowerShell, представляют собой не переменные среды, а являются переменными этой программной оболочки. Эти переменные в своем составе могут содержать не только обыкновенный текст. Переменные PowerShell имеют свойства хранить в себе целые объекты, например, переменная может содержать объект NET.Framework. Переменная в оболочке PowerShell так-же может хранить объект String или «число» — им может быть Int (integer). Благодаря таким возможностям переменных, PowerShell приобрела исключительную и большую гибкость.
В оболочке PowerShell перед именем переменной принято ставить знак доллара — $. Переменная получает значение через присваивающий оператор и для этого логично используется символ «=». Создать переменную можно очень просто, достаточно присвоить такой переменной какое-то значение. Например, выполнив команду:
$Name = «News»
мы создадим новую переменную с простым именем $Name и зададим ей значение из строки. Кавычки укажут PowerShell, что созданной переменной присвоено строковое значение.
Фактически переменные в PowerShell являются объектами. Следует отметить, особо не углубляясь в мелкие детали, что содержать объекты могут как обычные данные (в дальнейшем свойства), так и операции (в дальнейшем методы), разрешенные производить над ними. В приведенном раньше примере переменная $Name будет фигурировать как объект String. Как и все объекты, этот объект имеет свойства и с ним можно производить действия с использованием методов. Объект String имеет определенное свойство Length и оно может отобразить число символов в заданной строке. Если к объекту String применить метод ToUpper, то он даст копию строки, где все символы будут переконвертированы в верхний регистр. Как обратиться к свойствам или методам? Нужно просто использовать символ точка «.», который ставится после названия нужной переменной. Когда есть необходимость вызвать свойства, то скобки использовать нет необходимости, а вот при при вызове методов их нужно применить. Так, выполнив команду:
$Name.Length
мы получим значение 4, так как переменная $Name содержит четыре символа (News). Команда:
$Name.ToUpper()
возвратит нам значение NEWS.
Переменные среды Windows
Переменные среды Windows дают пользователю возможность обходиться без точного указания путей к требуемым папкам. К примеру, если буква системного диска заранее не известна, можно применить переменную %systemdrive%, которая возвращает буквенное обозначение диска с установленной ОС. Также важную роль переменные играют в оптимизации кода. Так повторяющийся несколько раз параметр (к примеру, раздел реестра) можно обозначить короткой переменной, после чего легко использовать.
В операционных системах компании Microsoft используются следующие переменные среды Windows:
ALLUSERSPROFILE
— выражает расположение папки «All Users» («Общие»).
APPDATA
— выражает стандартное размещение для настроек, баз данных и кеша установленных программ.
CD
— выражает адрес текущего каталога.
CMDCMDLINE
— точная команда для запуска командной строки.
CMDEXTVERSION
— системный вариант Command Processor Extensions.
CommonProgramFiles
— выражает расположение папки «Common Files» (по обыкновению, аналогична команде %ProgramFiles%\Common Files).
COMPUTERNAME
— выражает имя компьютера.
COMSPEC
— выражает адрес исполняемого файла оболочки.
DATE
— выражает текущую дату, в таком же формате, как и команда «date /t», и создается командной строкой.
ERRORLEVEL
— выражает код ошибки в последней использовавшейся команде, если не равно нулю, скорее всего, имеет место ошибка.
HOMEDRIVE
— выражает имя диска, где расположен основной каталог пользователя.
HOMEPATH
— выражает полный путь к главному каталогу пользователя.
HOMESHARE
— выражает сетевой адрес к общему каталогу пользователя.
LOGONSERVER
— выражает имя контроллера домена, используемое при авторизации юзера.
NUMBER_OF_PROCESSORS
— показывает количество процессоров, работающих в системе.
OS
— показывает название ОС, Windows 2000 и Windows XP отображаются под названием «Windows_NT».
PATH
— показывает расположение исполняемых файлов.
PATHEXT
— показывает список расширений файлов, воспринимаемых операционной системой в качестве исполняемых.
PROCESSOR_ARCHITECTURE
— показывает архитектуру процессора (x86, IA64 и другие).
PROCESSOR_IDENTIFIER
— отображает описание ЦП.
PROCESSOR_LEVEL
— отображает номер модели ЦП.
PROCESSOR_REVISION
— отображает системную ревизию ЦП.
PROGRAMFILES
— выражает адрес системной папки Program Files.
PROMPT
— выражает параметры командной строки по отношению к текущему интерпретатору и создается cmd.exe.
RANDOM
— случайное десятичное число из диапазона 0-32767, создается командной строкой.
SYSTEMDRIVE
— показывает системный диск с корневым каталогом Windows.
SYSTEMROOT
— выражает путь к корневой директории Windows.
TEMP
и TMP
— переменные, выражающие расположение временной папки (обычно, указывают на одну папку), могут быть и системными и локальными.
TIME
— отображает текущее время, в таком же формате, как и команда «time /t», генерируется командной строкой.
USERDOMAIN
— показывает домен, к которому присоединен пользователь.
USERNAME
— показывает имя пользователя.
USERPROFILE
— выражает расположение профайла пользователя.
WINDIR
— выражает каталог, куда установлена Windows.
Для доступа к значению переменной, нужно подставить знак «%» (без кавычек) перед ее обозначением и после него, к примеру:
echo %PROCESSOR_ARCHITECTURE%
Для задания значения переменной, следует воспользоваться командой «SET», к примеру:
SET TEMP=C:\TEMP
Переменные среды Windows можно редактировать в визуальном интерфейсе, нажав на кнопку «Переменные среды», для чего нужно открыть вкладку «Дополнительно» в «Свойствах системы» (ПКМ на «Мой компьютер» → «Свойства»).
Командная строка в Windows 8
Командная строка в Виндовс 8 по аналогии с предыдущими версиями этой операционной системы позволяет осуществлять выполнение компьютерных команд MS-DOS и других. Данный функционал дает возможность выполнять определенные задачи без использования графического интерфейса Windows. Однако чтобы пользоваться командной строкой, нужно иметь немалый опыт в компьютерной деятельности.
Для новичка запуск командной строки в Windows 8 должен предшествовать ознакомлению с самыми востребованными ее командами: в окне cmd.exe водится слово «Help» (без кавычек) и нажимается клавиша «Enter». Для получения дополнительных данных про каждую из представленных команд, следует ввести «Help» + название команды, о которой требуются сведения.
Где в Виндовс 8 командная строка:
На самом деле, запустить командную строку в Windows 8 еще проще, чем в Windows 7 — от пользователя требуется либо воспользоваться горячими клавишами «Win+X», после чего остается выбрать необходимый пункт из контекстного меню в левом нижнем углу экрана (присутствует даже пункт запуска cmd.exe от администратора!), либо, проведя из нижнего правого угла экрана вверх, выбрать «Поиск», где ввести «cmd» (после этого можно кликнуть ЛКМ на нужном результате и, тем самым, запустить командную строку, а можно кликнуть ПКМ и запустить ее от имени администратора). Также имеется альтернативный способ, предполагающий использование Диспетчера задач, после открытия которого следует перейти в подробное представление. Все, что далее потребуется сделать – создать новую задачу: для этого необходимо открыть пункт «Файл», а затем «Запустить новую задачу», в открывшемся окне наберите «cmd» (без кавычек) и, установив флажок напротив поля «Создать задачу с правами администратора», нажмите «ОК».
Современные операционные системы оснащены различными программами и командами. Запомнить их практически невозможно, но можно зафиксировать в памяти один из основных параметров, подходящий для любой утилиты – сочетанием таких символов «/?». Допустим, если вы выполните команду с использованием этого параметра, перед вами появится исчерпывающая информация о программе и синтаксисе всех ее параметров. Для пробы можете набрать в командной строке символы «cmd /?» и проанализировать результат по заданной команде.