当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 发现 PowerShell

作者:精品下载站 日期:2024-12-14 03:07:02 浏览:15 分类:玩电脑

发现 PowerShell


PowerShell 是一种命令行 shell 和一种脚本语言的结合体。 PowerShell 最初在 Windows 上运行,旨在帮助自动化管理任务。现在,它可以跨平台运行,可以用于各种任务。

PowerShell 的独特之处在于它接受并返回 .NET 对象,而不是文本。此功能可以更轻松地连接管道中的不同命令。

PowerShell 可以用来做什么?

自从 PowerShell 仅适用于 Windows 以来,其使用量一直在增长。它仍然用于 Windows 任务自动化,但今天,您可以将它用于以下任务:

  • 云管理。 PowerShell可用于管理云资源。例如,您可以检索有关云资源的信息,以及更新或部署新资源。
  • CI/CD。它还可以用作持续集成/持续部署管道的一部分。
  • 自动执行 Active Directory 和 Exchange 的任务。您可以使用它来自动执行 Windows 上的几乎所有任务,例如在 Active Directory 中创建用户和在 Exchange 中创建邮箱。

还有更多的使用领域,但前面的列表提示您 PowerShell 已经取得了长足的进步。

谁使用 PowerShell?

PowerShell 是一个功能强大的工具,可以帮助担任多种角色的人们。传统上,PowerShell 一直由系统管理员角色使用,但现在由自称 DevOps、Cloud Ops 甚至开发人员的人们使用。

PowerShell cmdlet

PowerShell 附带了数百个预安装命令。 PowerShell 命令称为 cmdlet(发音为 command-let)。

每个 cmdlet 的名称均由动词-名词对组成。例如,Get-Process。此命名约定使您更容易理解 cmdlet 的功能。它还可以让您更轻松地找到所需的命令。查找要使用的 cmdlet 时,您可以按动词或名词进行筛选。

使用 cmdlet 探索 PowerShell

当您第一次使用 PowerShell 时,可能会感到害怕,因为似乎有太多东西需要学习。 PowerShell 旨在帮助您根据需要一次学习一点。

PowerShell 包含可帮助您发现 PowerShell 的 cmdlet。使用这三个 cmdlet,您可以发现哪些命令可用、它们的用途以及它们操作的类型。

  • Get-Verb。运行此命令会返回大多数命令所遵循的动词列表。响应包括对这些动词的作用的描述。由于大多数命令都遵循此命名约定,因此它设定了对命令功能的期望。这可以帮助您选择适当的命令以及命令的名称(如果您要创建命令)。
  • 获取命令。此命令检索计算机上安装的所有命令的列表。
  • 获取会员。它基于基于对象的输出进行操作,并且能够发现哪些对象、属性和方法可用于命令。
  • 获取帮助。使用命令名称作为参数调用此命令会显示描述命令各个部分的帮助页面。

使用这些命令,您几乎可以发现有关 PowerShell 的几乎所有内容。

动词

动词是PowerShell中的一个重要概念。这是大多数 cmdlet 遵循的命名标准。这也是您在编写自己的命令时应该遵循的命名标准。这个想法是,动词表示您正在尝试执行的操作,例如读取或更改数据。 PowerShell 有一个标准化的动词列表。要获取所有可能动词的完整列表,请使用 Get-Verb cmdlet:

Get-Verb

该 cmdlet 返回一长串动词。 描述提供了动词含义的上下文。这是输出的前几行:

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 cmdlet 返回系统上安装的所有可用命令的列表。您返回的列表相当大。您可以通过使用参数或帮助程序 cmdlet 过滤响应来限制返回的信息量。

按名称过滤

您可以使用不同的参数过滤 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 cmdlet 返回的值之一。命令的最右边部分是名词部分。名词可以是任何东西。

  • 按动词过滤。在命令Get-Process中,动词部分是Get。要过滤动词部分,请使用 Verb 参数。

    Get-Command -Verb 'Get'
    

    此示例列出了使用动词 Get 的所有命令。

  • 按名词过滤。在命令Get-Process中,名词部分是Process。要过滤名词,请使用名词参数。以下示例返回所有名词以字母 U 开头的 cmdlet。

    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

使用帮助程序 cmdlet 来过滤结果

您还可以使用其他 cmdlet 来过滤结果。

  • 选择对象。这一多功能命令可帮助您从一个或多个对象中挑选出特定属性。您还可以限制取回的物品数量。以下示例返回当前会话中可用的前 5 个命令的 NameSource 属性值。

    Get-Command | Select-Object -First 5 -Property Name, Source
    
    Name                      Source
    ----                      ------
    Add-AppPackage            Appx
    Add-AppPackageVolume      Appx
    Add-AppProvisionedPackage Dism
    Add-AssertionOperator     Pester
    Add-ProvisionedAppPackage Dism
    

    有关详细信息,请参阅选择对象。

  • Where-对象。此 cmdlet 允许您根据属性值过滤返回的对象。该命令采用可以测试属性值的表达式。以下示例返回 ProcessNamep 开头的所有进程。

    Get-Process | Where-Object {$_.ProcessName -like "p*"}
    

    Get-Process cmdlet 返回进程对象的集合。要过滤响应,请将输出通过管道传送到 Where-Object。管道表示两个或多个命令通过管道 | 字符连接。一个命令的输出将作为下一个命令的输入发送。 Where-Object 的过滤器表达式使用 -like 运算符来匹配以字母 p 开头的进程。

使用 Get-Member 探索对象

一旦您能够找到所需的 cmdlet,您就想了解有关它生成的输出的更多信息。 Get-Member cmdlet 显示对象的类型、属性和方法。将要检查的输出通过管道传递给 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 仅显示一些属性。前面的示例显示了 NameMemberTypeDefinition 成员。您可以使用Select-Object来指定您想要查看的属性。例如,您只想显示 NameDefinition 属性:

Get-Process | Get-Member | Select-Object Name, Definition

按参数类型搜索

Get-Member 向我们展示了 Get-Process 返回 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…

了解命令的输出类型可以帮助缩小相关命令的搜索范围。

其他资源

  • Get-Command
  • Get-Member
  • Select-Object

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯