Основные командлеты Преобразование данных 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 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 Get-Process | Measure-Object Get-Process | Measure-Object –property VM –average –sum –minimum -maximum
Выбор объектов Командлет Select-Object Используется для двух целей: 1. Выбор подмножества объектов: -first, -last, -skip 2. Выбор свойств объектов В комбинации Get-Process | Select-Object –first 10 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 Remember: Exported data is no longer a live object 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 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
Операторы сравнения Основные: -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 Чувствительные к регистру: -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 Не чевствительные к регистру (не используются, вместо них используются основные) -ieq : Equal to -ine : Not equal to -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] Stop-Process –id 53 #Executes correctly Stop-Process 53 #Executes correctly Stop-Process –id 53 #Executes correctly Stop-Process 53 #Executes correctly
Привязка данных конвейера по значению Многие параметры предназначены для того, чтобы принимать данные из конвейера. Этот процесс называется binding. Вы этот метод уже использовали в команде Get-Service | Where-Object { $_.Status –eq "Running" } -InputObject Specifies the objects to be filtered. You can… Required? false Position? named Default value Accept pipeline input? true (ByValue) Accept wildcard characters? False -InputObject Specifies the objects to be filtered. You can… Required? false Position? named Default value Accept pipeline input? true (ByValue) Accept wildcard characters? False
Привязка данных объекта по имени свойства В рамках данной техники оболочка ищет имя параметра, после чего проверяют, обладают ли входящие объекты соответствующими свойствами. Если да – соответствующее свойство привязывается к параметру. Обратите внимание, что данный тип привязки встречается только тогда, когда оболочка не смогла привязать входящие данные по значению. Например, изучите справочную информацию по командлету Get-Service: -ComputerName Gets the services running on the specified computers… Required? false Position? named Default value Localhost Accept pipeline input? true (ByPropertyName) Accept wildcard characters? False -ComputerName Gets the services running on the specified computers… Required? false Position? named Default value Localhost Accept pipeline input? true (ByPropertyName) Accept wildcard characters? False
Переименование свойств Иногда надо связать командлеты, но они имеют разные названия свойств для одинаковых данных По значению просто По имени свойства требует переименования свойства. Переименование с использованием Select-Object. Get-ADComputer –filter * | Get-ADComputer –filter * | Select-Object | Get-Service Get-ADComputer –filter * | Get-ADComputer –filter * | Select-Object | Get-Service
Understanding Passthrough Some action cmdlets accept pipeline input, but do not provide output. Cmdlets that provide no output by default require an extra parameter (-passThru) to pass on its objects. -passThru is used by many cmdlets. See help for details. New-ADUser –name JohnD –samaccountname JohnD # This command has no output. Results cant be piped to other commands as is. New-ADUser –name JohnD –samaccountname JohnD # This command has no output. Results cant be piped to other commands as is. New-ADUser –name JohnD –samaccountname JohnD –passThru | Enable-ADAccount #New-ADUser result is now piped to Enable-ADAccount New-ADUser –name JohnD –samaccountname JohnD –passThru | Enable-ADAccount #New-ADUser result is now piped to Enable-ADAccount