powerShell3

advertisement
Основные командлеты
• Преобразование данных

Sort-Object

Group-Object

Measure-Object

Select-Object

Compare-Object
Эти командлеты преобразут
данные, полученные от других
командлетов
• Импорт и экспорт данных

Import-CSV

Export-CSV

Import-CliXML

Export-CliXML
Эти командлеты экспортируют
и импортируют данные из/в
другие форматы
Сортировка объектов
• Командлет Sort-Object

Командлет Sort-Object позволяет изменить порядок, в
котором перечисляются объекты.

Он может принимать входящие данные любого типа .

Необходимо уточнить одно или несколько свойств, в
соответствии с которыми будет сформирован список
объектов .

по умолчанию объекты могут быть отсортированы в
восходящем порядке .

указав параметр –descending, можете изменить порядок на
нисходящий. .
Get-Service | Sort-Object status
Get-Service | Sort-Object status –descending
Get-Service | Sort-Object status, name
Группировка объектов
• The Group-Object cmdlet…

изучает свойства заданных объектов и объединяет объекты
в группы по значениям каждого свойства

на выходе он показывает, сколько объектов находится в
каждой группе Is useful only when object properties have
repetitive values
Get-Service | Group-Object status
Измерения
• Командлет Measure-Object может посчитать количество
входящих объектов, а также измерить составные
значения числовых свойств объектов.
•
•
•
•
-average
-maximum
-minimum
-sum

Обратите внимание, что Measure-Object вбирает в себя
входящие объекты, что означает, что, поступив в него, они
больше не находятся в конвейере.

Measure-Object обычно является последним командлетом в
цепочке
Get-Process | Measure-Object
Get-Process | Measure-Object –property VM
–average –sum –minimum -maximum
Выбор объектов
• Командлет Select-Object

Используется для двух целей:
1. Выбор подмножества объектов: -first, -last, -skip
Get-Process | Select-Object –first 10
2. Выбор свойств объектов
Get-Process | Select-Object name,ID,VM,PM

В комбинации
Get-Process | Select-Object name,ID –first 10
CSV и XML
• Windows PowerShell обладает возможностью читать и
записывать файлы, в которых значения разделены
запятой (comma-separated values или CSV), а также
простые XML файлы

Import-CSV, Export-CSV, Import-CliXML, Export-CliXML
Get-EventLog Security –newest 20 | Export-CSV new-events.csv
Get-Process | Sort VM –desc | Select –First 10 | Export-CSV
top-vm.csv
Import-CliXML procs.xml | Get-Member
• Remember: Exported data is no longer a “live” object
Операторы сравнения
• Основные:
 -eq : Equal to
 -ne : Not equal to
• Не чевствительные к регистру
 -le : Less than or equal to
(не используются, вместо них
 -ge : Greater than or equal to
используются основные)
 -gt : Greater than
 -lt : Less than
• -ieq : Equal to
• -ine : Not equal to
• Чувствительные к регистру:
 -ceq : Equal to
 -cne : Not equal to
 -cle : Less than or equal to
 -cge : Greater than or equal to
 -cgt : Greater than
 -clt : Less than
• -ile : Less than or equal to
• -ige : Greater than or equal to
• -igt : Greater than
• -ilt : Less than
Операторы Булевой алгебры (-and, -or, -not)
• В сложных сравнениях вы можете использовать
операторы –and и –or

4 –gt 10 –or 10 –gt 4 # returns True

4 –lt 10 –and “Hello” –ne “hello” # returns False
• Обычно сравнения выполняются слева направо, однако
Вы можете группировать выражения.

(4 –gt 10 –and (10 –lt 4 –or 10 –gt 5)) –and 10 –le 10
Фильтрация конвейеров
• Командлет Where-Object …

Используется для удаления некоторых объектов из
конвейера

Убирает объекты в соответствии с указанными критероиями

Пропускает требуемые объекты далее по конвейеру
• Where-Object использует переменную $_ для указания
текущего объекта
Get-Service | Where-Object { $_.Status –eq "Running" }
Перечисление объектов
• Командлет ForEach-Object …

Позволяет выполнять операции над набором объектов

Where-Object использует $_ для обозначения текущего
объекта

Использует блок скрипта {}
Get-Service | Where-Object { $_.Status –eq "Stopped" }
| ForEach-Object { $_.Start() }
Позиционные параметры
• Позиционные параметры не требуют указания их имен
в командной строке

Их использование строится на их местоположении
(позиции) в командной строке

Это упрощает ввод команд, например
Stop-Process –id 53 #Executes correctly
Stop-Process 53 #Executes correctly
• Имена позиционных параметров в справке указываются
в квадратных скобках
Stop-Process [-Id] <Int32[]>
• Имена параметров, за исключением позиционных могут
находиться в любой части командной строки

Однако, использование имен параметров делает код чище
Привязка данных конвейера по значению
• Многие параметры предназначены для того, чтобы
принимать данные из конвейера. Этот процесс
называется binding.

Вы этот метод уже использовали в команде
Get-Service | Where-Object { $_.Status –eq "Running" }
-InputObject <psobject>
Specifies the objects to be filtered. You can…
Required?
Position?
Default value
Accept pipeline input?
Accept wildcard characters?
false
named
true (ByValue)
False
Привязка данных объекта по имени свойства
• В рамках данной техники оболочка ищет имя
параметра, после чего проверяют, обладают ли
входящие объекты соответствующими свойствами. Если
да – соответствующее свойство привязывается к
параметру. Обратите внимание, что данный тип
привязки встречается только тогда, когда оболочка не
смогла привязать входящие данные по значению.
Например, изучите справочную информацию по
командлету Get-Service:
-ComputerName <string[]>
Gets the services running on the specified computers…
Required?
Position?
Default value
Accept pipeline input?
Accept wildcard characters?
false
named
Localhost
true (ByPropertyName)
False
Переименование свойств
• Иногда надо связать командлеты, но они имеют разные
названия свойств для одинаковых данных

По значению просто

По имени свойства требует переименования свойства.
• Переименование с использованием Select-Object.

Select-Object
@{Label=“NewName”;Expression={$_.OldName}}
Get-ADComputer –filter * | Select-Object
@{Label="ComputerName";Expression={$_.Name}}
Get-ADComputer –filter * | Select-Object *,
@{Label="ComputerName";Expression={$_.Name}} |
Get-Service
Understanding Passthrough
• Some “action” cmdlets accept pipeline input, but do not
provide output.
New-ADUser –name JohnD –samaccountname JohnD
# This command has no output. Results can’t be piped to
other commands as is.
• Cmdlets that provide no output by default require an extra
parameter (-passThru) to pass on its objects.
New-ADUser –name JohnD –samaccountname JohnD
–passThru | Enable-ADAccount
#New-ADUser result is now piped to Enable-ADAccount
• -passThru is used by many cmdlets. See help for details.
Download