Основные командлеты • Преобразование данных 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.