Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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. Это соглашение об именовании делает проще понимание того, что выполняет cmdlet. Это также упрощает поиск нужной команды. При поиске используемого командлета можно отфильтровать глагол или существительное.
Использование командлетов, чтобы изучить 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-Processглагольная часть —Get. Чтобы отфильтровать по глаголу, используйте параметр 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использует оператор-likeдля сопоставления процессов, начинающихся с буквыp.
Изучение объектов с помощью 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, MemberType и Definition. Вы можете использовать Select-Object для указания свойств, которые нужно просмотреть. Например, вы хотите отобразить только Name свойства и Definition свойства:
Get-Process | Get-Member | Select-Object Name, Definition
Поиск по типу параметра
Get-Member показывает нам, что Get-Process возвращает объекты типа процесса . Параметр ParameterTypeGet-Command можно использовать для поиска других команд, которые принимают объекты 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…
Зная тип выходных данных команды, можно сузить поиск связанных команд.
Дополнительные ресурсы
PowerShell