5 командлетов для начала работы с PowerShell
PowerShell быстро становится предпочтительным языком сценариев и CLI опытных пользователей, а также ИТ-специалистов. Для начала стоит изучить несколько команд, поэтому у нас есть 5 полезных командлетов, которые вы можете изучить сегодня..
Get-Command
Get-Command - один из самых полезных командлетов во всей PowerShell, поскольку он поможет вам разобраться с PowerShell, позволив вам искать определенные командлеты. Использование Get-Command само по себе, по общему признанию, не очень полезно, так как оно просто выплевывает каждую команду, имеющуюся в PowerShell..
Но из этого мы можем видеть, что те объекты, которые выводит PowerShell, имеют как свойство Name, так и свойство ModuleName. Используя эту информацию, мы можем детализировать наш поиск путем поиска командлетов, которые содержат определенные термины. Например, если бы я хотел найти все командлеты, содержащие слово «IP», я мог бы сделать это:
Get-Command -Name * IP *
Как видите, мы все еще получаем довольно много результатов, наш следующий вариант - поиск в определенном модуле. В нашем случае я выберу модуль NetTCPIP.
Get-Command -Module NetTCPIP -Имя * IP *
Получить помощь
После того, как вы нашли командлет, который вы ищете с помощью Get-Command, вы захотите узнать синтаксис и то, как вы можете использовать этот конкретный командлет. Вот где приходит Get-Help, если вы когда-либо использовали командную строку в Windows, вы, вероятно, сделали что-то вроде этого:
ipconfig /?
Что ж, это не работает в PowerShell, это потому, что в PowerShell используется пространство для отделения команды от ее параметров. Поэтому вместо этого мы используем Get-Help и передаем имя командлета в Get-Help в качестве параметра..
Get-Help Get-Process
Get-Member
Get-Member позволяет нам получать информацию об объектах, возвращаемых командлетом. Смысл get-member в том, что он использует функцию конвейера PowerShell. Чтобы продемонстрировать это, мы можем использовать командлет Get-Process..
Как вы видите, вывод PowerShell показывает нам некоторые свойства, которые вы можете видеть в верхней части каждого столбца. Первая проблема заключается в том, что, хотя эти свойства вы можете искать большую часть времени, их еще больше. Вторая проблема заключается в том, что он не показывает никаких методов, которые мы можем вызвать для объекта. Чтобы увидеть методы и свойства, мы можем направить наш вывод в Get-Member, например так:
Get-Process | Get-Member
Хотя сейчас это может ничего не значить для вас, вам рано или поздно придется использовать Get-Member, и чем раньше вы научитесь использовать его, тем лучше. Например, используя информацию из вывода, мы можем сделать что-то вроде:
Start-Process notepad.exe
$ NotepadProc = Get-Process -Name notepad
$ NotepadProc.WaitForExit ()
Start-Process calc.exe
Этот скрипт запускает блокнот, затем назначает вывод «Get-Process -Name notepad» переменной $ NotepadProc, затем мы вызываем метод WaitForExit в $ NotepadProc, который заставляет скрипт останавливаться, пока вы не закроете блокнот, как только вы закроете блокнот тогда калькулятор запустится.
$ _ (Текущий объект конвейера)
Хотя это и не командлет, он является одной из наиболее часто используемых специальных переменных в PowerShell. Официальное название для $ _ - «текущий объект конвейера». Он используется в блоках сценариев, фильтрах, в разделе функций процесса, где-объект, foreach-объект и переключатели. Однако это проще объяснить на примере, который приводит нас к следующему и последнему командлету Where-Object..
Where-Object
Where-Object делает именно то, на что это похоже, он выбирает объект на основе того, соответствует ли он определенным критериям. Это объединит $ _ и свойства, которые мы можем увидеть, используя Get-Member. Чтобы продемонстрировать это, мы передадим вывод Get-Process в командлет Where-Object.
Get-Process | Where-Object $ _. Name -eq «iexplore»
Так что здесь происходит, спросите вы? Ну, первое, что мы делаем, это получаем список процессов на нашем компьютере и передаем вывод (используя символ |) в наш командлет Where-Object, который принимает блок скрипта в качестве параметра. Блок сценария (определяемый фигурными скобками) инструктирует командлеты Where-Object только выбирать объекты, для которых их параметр name равен «iexplore», и поэтому мы получаем только список запущенных экземпляров IE. Вот и все, повеселись!