Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
PowerShell — это оболочка командной строки и язык сценариев в одном. PowerShell запущена в Windows, чтобы автоматизировать административные задачи. Теперь она выполняет кроссплатформенную платформу и может использоваться для различных задач.
Что делает PowerShell уникальным, заключается в том, что он принимает и возвращает объекты .NET, а не текст. Эта функция упрощает подключение различных команд в конвейере.
Для чего можно использовать PowerShell?
Изначально PowerShell был только для Windows. Теперь она кроссплатформенная и может использоваться для различных задач, таких как:
- Управление облаком. PowerShell можно использовать для управления облачными ресурсами. Например, можно получить сведения, обновить или развернуть новые ресурсы.
- CI/CD. Его также можно использовать в составе конвейера непрерывной интеграции и непрерывного развертывания.
- Автоматизация задач для Active Directory и Exchange. Ее можно использовать для автоматизации практически любой задачи в Windows, таких как создание пользователей в Active Directory и почтовых ящиках в Exchange.
Кто использует PowerShell?
PowerShell — это мощный инструмент, который может помочь людям работать в различных ролях. Традиционно PowerShell использовался системными администраторами. Теперь он используется людьми, называя себя DevOps, Cloud Ops и даже разработчиков.
Командлеты PowerShell
PowerShell поставляется сотнями предустановленных команд. Команды PowerShell называются командлетами (с помощью произнесемой команды).
Имя каждого командлета состоит из пары Verb-Noun . Например: Get-Process. Это соглашение об именовании упрощает понимание того, что делает командлет. Это также упрощает поиск нужной команды. При поиске используемого командлета можно отфильтровать глагол или существительное.
Использование командлетов для изучения PowerShell
Когда вы сначала выберете PowerShell, это может чувствовать себя запугать, как кажется, так много, чтобы узнать. PowerShell предназначена для того, чтобы узнать немного за раз, как вам это нужно.
PowerShell включает командлеты, помогающие обнаружить PowerShell. С помощью этих трех командлетов можно узнать, какие команды доступны, что они делают, и какие типы они работают.
-
Get-Verb. При выполнении этой команды возвращается список команд, которые большинство команд соответствуют. Ответ содержит описание того, что делают эти команды. Так как большинство команд соответствуют этому соглашению об именовании, он задает ожидания по выполнению команды. Эта команда помогает выбрать соответствующую команду и имя команды при создании собственных команд. -
Get-Command. Эта команда извлекает список всех команд, установленных на компьютере. -
Get-Member. Он работает с выходными данными на основе объектов и может обнаруживать, какие объекты, свойства и методы доступны для команды. -
Get-Help. При вызове этой команды имя команды в качестве аргумента отображается страница справки, описывающая различные части команды.
С помощью этих команд вы можете обнаружить практически все, что вам нужно знать о PowerShell.
Команда
Команда — это важная концепция в PowerShell. Это стандарт именования, который следует большинству командлетов. Это также стандарт именования, который вы должны следовать при написании собственных команд. Идея заключается в том, что команда говорит, что вы пытаетесь сделать, например чтение или, возможно, изменение данных. PowerShell содержит стандартный список команд. Чтобы получить полный список всех возможных команд, используйте Get-Verb командлет:
Get-Verb
Командлет возвращает длинный список команд. Описание содержит контекст для того, что глагол предназначен для выполнения. Ниже приведены первые несколько строк выходных данных:
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or attaches an item to another item
Clear cl Common Removes all the resources from a container but does not delete the container
Close cs Common Changes the state of a resource to make it inaccessible, unavailable, or unusab…
Copy cp Common Copies a resource to another name or to another container
Enter et Common Specifies an action that allows the user to move into a resource
Exit ex Common Sets the current environment or context to the most recently used context
...
Поиск команд с помощью Get-Command
Командлет Get-Command возвращает список всех доступных команд, установленных в системе. Список может быть большим. Вы можете ограничить объем информации, возвращаемой, отфильтровав ответ с помощью параметров или вспомогательных командлетов.
Фильтрация по имени
Вы можете отфильтровать выходные Get-Command данные с помощью различных параметров. Фильтрация позволяет находить команды с определенными свойствами. Параметр Name позволяет найти определенную команду по имени.
Get-Command -Name Get-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Что делать, если вы хотите найти все команды, которые работают с процессами? Для сопоставления других форм строки можно использовать подстановочный знак * . Рассмотрим пример.
Get-Command -Name *-Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Management
Фильтрация по существительным и глаголам
Существуют другие параметры, которые фильтруются по значениям глаголов и существительных. Глаголовая часть имени команды является самой левой частью. Команда должна быть одной из значений, возвращаемых командлетом Get-Verb . Самая правая часть команды — это часть существительного. Существительное может быть чем-нибудь.
Фильтрация по команде. В команде часть команды —
Getэто часть командыGet-Process. Чтобы отфильтровать часть команды, используйте параметр Verb .Get-Command -Verb 'Get'В этом примере перечислены все команды, использующие команду
Get.Фильтруйте существительное. В команде
Get-ProcessявляетсяProcessчасть существительного. Чтобы отфильтровать существительное, используйте параметр Noun . В следующем примере возвращаются все командлеты, имеющие существительные, начиная с буквыU.Get-Command -Noun U*
Кроме того, можно объединить параметры, чтобы сузить поиск, например:
Get-Command -Verb Get -Noun U*
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-UICulture 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Unique 7.0.0.0 Microsoft.PowerShell.Utility
Cmdlet Get-Uptime 7.0.0.0 Microsoft.PowerShell.Utility
Использование вспомогательных командлетов для фильтрации результатов
Вы также можете использовать другие командлеты для фильтрации результатов.
Select-Object. Эта универсальная команда помогает выбрать определенные свойства из одного или нескольких объектов. Вы также можете ограничить количество возвращаемых элементов. В следующем примере возвращаются значения свойств Name и Source для первых 5 команд, доступных в текущем сеансе.Get-Command | Select-Object -First 5 -Property Name, SourceName Source ---- ------ Add-AppPackage Appx Add-AppPackageVolume Appx Add-AppProvisionedPackage Dism Add-AssertionOperator Pester Add-ProvisionedAppPackage DismДополнительные сведения см. в разделе "Выбор объекта".
Where-Object. Этот командлет позволяет фильтровать объекты, возвращаемые на основе значений свойств. Команда принимает выражение, которое может проверить значение свойства. В следующем примере возвращаются все процессы, с которыхProcessNameначинаетсяp.Get-Process | Where-Object {$_.ProcessName -like "p*"}Командлет
Get-Processвозвращает коллекцию объектов процесса. Чтобы отфильтровать ответ, передайте выходные данныеWhere-Objectв . Piping означает, что две или несколько команд подключены через символ канала|. Выходные данные одной команды отправляются в качестве входных данных для следующей команды. Выражение фильтра для использования оператора дляWhere-Objectсопоставления процессов, начинающихся с буквыp.-like
Изучение объектов с помощью Get-Member
Найдя нужный командлет, вы хотите узнать больше о том, какие выходные данные он создает. Командлет Get-Member отображает тип, свойства и методы объекта. Передайте выходные данные, которые необходимо проверить Get-Member.
Get-Process | Get-Member
Результат отображает возвращаемый тип как TypeName и все свойства и методы объекта. Вот фрагмент такого результата:
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Handles AliasProperty Handles = Handlecount
Name AliasProperty Name = ProcessName
...
С помощью параметра MemberType можно ограничить возвращаемые сведения.
Get-Process | Get-Member -MemberType Method
По умолчанию PowerShell отображает только несколько свойств. В предыдущем примере отображаются Nameэлементы и MemberTypeDefinition элементы. Вы можете использовать Select-Object для указания свойств, которые нужно просмотреть. Например, вы хотите отобразить только Name свойства и Definition свойства:
Get-Process | Get-Member | Select-Object Name, Definition
Поиск по типу параметра
Get-Member показывает нам, что Get-Process возвращает объекты типа процесса . Параметр Get-CommandParameterType можно использовать для поиска других команд, которые принимают объекты Process в качестве входных данных.
Get-Command -ParameterType Process
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Debug-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Enter-PSHostProcess 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Get-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Get-PSHostProcessInfo 7.1.0.0 Microsoft.PowerShell.Core
Cmdlet Stop-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Cmdlet Wait-Process 7.0.0.0 Microsoft.PowerShell.Managem…
Зная тип выходных данных команды, можно сузить поиск связанных команд.