首页 > 系统相关 >PowerShell

PowerShell

时间:2024-06-02 22:12:26浏览次数:32  
标签:Get Process 命令 谓词 cmdlet PowerShell

目录


PowerShell 是一种跨平台的任务自动化解决方案,由命令行 shell、脚本语言和配置管理框架组成。 PowerShell 在 Windows、Linux 和 macOS 上运行。

MS Doc PowerShell

确定当前PowerShell版本

在 PowerShell 控制台中输入

$PSVersionTable

PowerShell命令参考

Get-Help

命令行 Shell

PowerShell 是新式命令 shell,其中包括其他常用 shell 的最佳功能。 与大多数仅接受并返回文本的 shell 不同,PowerShell 接受并返回 .NET 对象。 shell 包括以下功能:

脚本语言

作为一种脚本语言,PowerShell 通常用于自动执行系统管理。 它还用于经常在 CI/CD 环境中生成、测试和部署解决方案。 PowerShell 是在 .NET 公共语言运行时 (CLR) 上构建的。 所有输入和输出都是 .NET 对象。 无需分析文本输出即可从输出中提取信息。 PowerShell 脚本语言包含以下功能:

自动化平台

PowerShell 的可扩展性质使 PowerShell 模块的生态系统能够部署和管理使用的几乎所有技术。 例如:

Microsoft

第三方

配置管理

PowerShell Desired State Configuration (DSC) 是 PowerShell 中的一个管理框架,可让你使用“配置即代码”来管理企业基础结构。 借助 DSC 可以:

  • 为可重复部署创建声明性配置和自定义脚本
  • 强制执行配置设置并报告配置偏移
  • 使用推送或请求模型部署配置

PowerShell Markdown最佳做法

Markdown best practices

PowerShell相关学习模块

PowerShell

PowerShell cmdlet

PowerShell 随附数百个预安装命令。 PowerShell 命令称为 cmdlet(读作 command-let)。

每个 cmdlet 的名称都包含一个“谓词-名词”对。 例如 Get-Process。 这种命名约定便于人们了解 cmdlet 的作用。 还能让你更轻松地找到所查找的命令。 当你查找要使用的 cmdlet 时,可以根据谓词或名词进行筛选。

使用 cmdlet 探索 PowerShell

当你第一次学习 PowerShell 时,它可能会让人望而生畏,因为似乎要学习许多内容。 PowerShell 经过专门设计,你可以在需要它时一次学习少量知识。

PowerShell 包含 cmdlet,它们可帮助你探索 PowerShell。 通过使用下面三个 cmdlet,可以了解有哪些命令可用、这些命令执行什么操作,以及它们在什么类型上运行。

  • Get-Verb。 运行此命令时,将返回大多数命令遵循的谓词的列表。 响应包括有关这些谓词的功能的说明。 由于大多数命令都遵循这种命名约定,因此它对命令的功能设置了预期目标。 如果你要创建命令,这有助于选择适当的命令和命令名称。
  • Get-Command。 此命令会检索计算机上安装的所有命令的列表。
  • Get-Member。 它在基于对象的输出上运行,并且能够发现可用于命令的对象、属性和方法。
  • Get-Help。 以命令名称为参数调用此命令,将显示一个帮助页面,其中说明了命令的各个部分。

通过使用这些命令,可以了解几乎所有关于 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。 要筛选名词,请使用 Noun 参数。 以下示例返回包含以字母 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 来筛选结果。

  • Select-Object。 此通用命令可帮助你从一个或多个对象中选取特定属性。 还可以限制返回的项目数。 以下示例返回当前会话中前 5 个可用命令的 Name 和 Source 属性值。
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

有关详细信息,请参阅 Select-Object

  • Where-Object。 此 cmdlet 允许根据属性值筛选返回的对象。 命令采用可以测试属性值的表达式。 以下示例返回以 p 开头的 ProcessName 的所有进程。
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-Command 的 ParameterType 参数可用于查找将 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…

了解命令的输出类型有助于缩小相关命令的搜索范围。

相关参考

  1. 探索 PowerShell

标签:Get,Process,命令,谓词,cmdlet,PowerShell
From: https://www.cnblogs.com/lanwah/p/18227702

相关文章

  • PowerShell 来操作 Windows 防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常
    PowerShell来操作Windows防火墙,实现网络访问控制和防火墙规则的设置。下面是一些常见的PowerShell命令,用于创建阻止特定类型文件传输协议的规则和限制电子邮件附件的规则:阻止FTP传输协议:powershellCopyCodeNew-NetFirewallRule-DisplayName"BlockFTP"-DirectionOu......
  • PowerShell实现定时备份并清理文件夹数据
    脚本backup.ps1#设置执行策略以允许脚本运行Set-ExecutionPolicyBypass-ScopeProcess-ForceWrite-Host"正在备份文件,请勿关闭...."#设置源目录和目标备份目录#备份源文件路径$SOURCE_DIR="D:\data\app\images"#备份目标路径$BACKUP_DIR="D:\data\backup"$......
  • 在 Windows Server 2022 中,您可以使用 PowerShell 来管理 DNS 服务器,以下是一些常用的
    在WindowsServer2022中,您可以使用PowerShell来管理DNS服务器,以下是一些常用的PowerShell命令及其示例:安装DNS服务器角色:安装DNS服务器角色:powershellCopyCodeInstall-WindowsFeature-NameDNS-IncludeManagementTools配置DNS区域和记录:创建新的......
  • 20个PowerShell命令
    1.get-command,查找都有哪些指令,get-cmmand简写gcm例如gcm>aaa.txt结果输入到aaa.txt文件中cataaa.txt查看文本文件内容moreaaa.txt2、get-help后面跟命令get-helpcat3、clear-host,简称cls,相当于Linux里面的清屏命令clear,这里也可以用clear4、get-location,简称gl,相当......
  • Windows PowerShell
    WindowsPowerShell是微软发布的一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用.NETFramework的强大功能。引入了许多非常有用的新概念,从而进一步扩展了在Windows命令提示符和WindowsScriptHost环境中获得的知识和创建的脚本。=========================......
  • 在Windows命令提示符或PowerShell中,如果你想要同时执行多个dir /S指令而不等待前一个
    在Windows命令提示符或PowerShell中,如果你想要同时执行多个dir/S指令而不等待前一个指令完成,你可以使用以下方法:1.使用并行命令运行在命令提示符中,可以使用start命令以及/B选项来在后台启动一个新的命令窗口并执行指定的命令。这样可以使得dir/S命令在一个新的窗口中执行,而不......
  • PowerShell 命令 Get-NetConnectionProfile 来查看当前网络连接的类型。命令会列出当
    PowerShell命令Get-NetConnectionProfile来查看当前网络连接的类型。在PowerShell中执行以下命令:powershellCopyCodeGet-NetConnectionProfile这个命令会列出当前计算机上所有网络连接的详细信息,包括连接名称、接入类型(例如“域网络”、“专用网络”、“公用网络”)等。在......
  • PowerShell 中重置SQL SERVER数据库的 SA(System Administrator)密码可以通过 SQL Serve
    PowerShell中重置数据库的SA(SystemAdministrator)密码可以通过SQLServerManagementObjects(SMO)来完成。以下是一个基本的PowerShell脚本,可以用来重置SA用户的密码:powershellCopyCode#导入SQLServer模块Import-ModuleSQLPS-DisableNameChecking#设置SQL......
  • powershell脚本批量拉取 git仓库文件
    #定义基础URL和数据库列表$BASE_URL="http://8.8.11.99:8999/yaya/"$DATABASES="common-service","bi-system","erp","gateway","pdm","plm","public-service","scm",&quo......
  • powershell7升级笔记
    https://learn.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell-on-windows?view=powershell-7.3#msi安装powershell7法一:推荐MSI安装方式,全打钩,可以自动配置环境变量和右键菜单https://learn.microsoft.com/zh-cn/powershell/scripting/install/i......