PowerShell核准动词入门指南

关于 PowerShell 脚本编写,一致的命名约定可以使构建健壮解决方案的任务变得更加容易。好消息是,在编写脚本和命令时,您可以使用 PowerShell 批准的动词。

在本教程中,您将通过一系列示例了解在 PowerShell 中使用的批准动词。

立即开始,提升您的 PowerShell 脚本水平吧!

先决条件

本教程包括动手演示。如果您希望跟随操作,请确保您的系统运行 PowerShell 5.1 或更高版本。本教程使用 Windows 11 和 PowerShell 7。

检索 PowerShell 批准动词列表

在 PowerShell 中,cmdlet 是在 PowerShell 环境中执行特定操作的小型、单一功能命令。

PowerShell 中的每个 cmdlet 都有一个遵循动词-名词对格式的唯一名称,其中:

  • 名称的动词部分描述了 cmdlet 执行的操作。在 PowerShell 中使用的一些常见动词如下:
Verb Function
Get Retrieves information.
Set Changes or updates settings.
New Creates something new.
Remove Deletes or removes something.
  • 名称的名词部分标识执行操作的实体或对象,即要执行操作的目标。名词通常描述了 cmdlet 与之交互的对象的类别或类型,例如命令、进程、服务或文件。

要查看您的脚本可以使用的所有已批准动词:

执行以下Get-Verb cmdlet以获取PowerShell批准动词的完整列表。

Get-Verb

下面的输出只显示了一些您可以在脚本中使用的动词。

Retrieving a complete list of approved verbs

现在,运行与下面相同的命令,但这次,您将通过通配符搜索列出所有以re开头的已批准动词。这样做会将动词列表缩小到与重置、调整大小、重做等相关的动词。

Get-Verb re*

如下所示,在您有特定操作并希望找到与该操作紧密匹配的动词时,缩小动词列表是有帮助的。

Narrowing down the list of approved verbs

通过New动词创建新资源

您刚刚在PowerShell中检索到了一组批准的动词,但在脚本或运行命令时,如何使用这些动词呢?您将在要创建的资源类型(即用户、文件、服务)前加上New动词。

但在这个示例中,您将创建一个新的资源,具体而言是一个名为John Smith的新用户,方法如下:

执行以下New-LocalUser命令以创建一个名为John Smith的新用户,密码为Password123,并设置账户永不过期-AccountNeverExpires

New-LocalUser -Name "John Smith" -AccountNeverExpires -Password (ConvertTo-SecureString -AsPlainText "Password123" -Force
Creating a new resource (user account) via the New verb

通过Get动词检索资源信息

除了创建新资源外,PowerShell 还有一个动词,可以让您检索有关任何现有资源的信息。在 PowerShell 中,Get 动词通常用于检索有关特定资源(如操作系统、服务、文件和其他对象)的信息。

通过Get动词检索资源信息的步骤:

运行下面的Get-LocalUser命令,以获取有关特定本地用户(John Smith)的信息。

Get-LocalUser -Name "John Smith"

下面,输出显示用户帐户John Smith启用的(活动的)。

Retrieving resource information via the Get verb

通过Set动词修改现有资源

想象一下,在查看某个资源的信息后,您注意到有些不对劲。如何修改现有资源?不用担心!PowerShell 批准的动词Set允许您对现有资源进行更改。

与重新创建资源不同,Set动词允许您通过修改其属性或配置来进行调整。

通过Set动词修改现有资源的步骤:

执行以下命令将$myVariable的值设置为Hello,并修改$myVariable的值为Hello, World!。这些命令不会提供输出,但你将在下一步中验证更改。

# 定义一个变量资源
$myVariable = "Hello"

# 修改现有变量资源的值
Set-Variable -Name myVariable -Value "Hello, World!"

现在,运行下面的Get-Variable命令来检索有关你的资源($myVariable)的信息。

Get-Variable -Name myVariable

如下所示,输出显示了变量的名称和值。

Retrieving information about a resource

通过Invoke动词触发操作或调用命令

与在前面的示例中手动运行命令不同,为什么不在PowerShell脚本中自动化它们呢?如何做到?Invoke动词允许你以编程方式启动操作或调用命令。

通过PowerShell脚本和Invoke动词,你可以一次运行多个PowerShell命令,而无需在控制台中全部键入。

要查看通过Invoke动词触发操作的工作原理:

1. 执行以下Invoke-Expression命令来调用Get-Date命令,该命令让你检索当前日期和时间。

Invoke-Expression -Command "Get-Date"

下面的输出显示了通过Invoke动词成功执行Get-Date命令。

Triggering a command via the Invoke verb

2. 接下来,使用您喜欢的代码编辑器创建一个PowerShell脚本文件(即InvokeVerbDemo.ps1),并填充以下代码。

此代码显示(Write-Host)欢迎消息,并调用Get-Service cmdlet列出系统中的所有服务。

# 显示热烈的欢迎消息
Write-Host "Welcome to the Invoke Example!"

# 调用Get-Service cmdlet
Invoke-Command -ScriptBlock { Get-Service }

3. 现在,运行以下命令以调用(Invoke-Expression)您的PowerShell脚本(InvokeVerbDemo.ps1)。将$scriptPath变量的值替换为您的脚本文件的路径。

$scriptPath = "C:\PowerShellScripts\InvokeVerbDemo.ps1"
Invoke-Expression -Command $scriptPath

下面的输出显示了欢迎消息和系统中所有服务的列表,这证实了您的脚本成功执行。

Invoking a script via the Invoke verb

4. 而不只是命令,编写一个可重复使用的函数(例如,Invoke-MyTask),您可以随时调用,如下所示。实际上,函数可以增强PowerShell脚本的可维护性和可重用性。

在这个例子中,Invoke-MyTask函数在调用时封装了以下命令:

  • 在控制台上显示(Write-Host)字符串Executing MyTask...
  • 检索所有进程的列表(Get-Process),并仅选择每个进程的NameCPU属性(Select-Object)。
# 使用Invoke动词定义自定义函数
function Invoke-MyTask {
    # 在这里放入您的自定义任务
    Write-Host "Executing MyTask..."
    Get-Process | Select-Object Name, CPU
}
Defining a PowerShell function

5. 最后,执行以下命令以调用您的函数(Invoke-MyTask)。

Invoke-Expression -Command Invoke-MyTask

你将看到系统上运行的所有进程的列表,包括它们的名称和CPU使用情况,如下所示。

Invoking a function

通过Test动词验证资源

在创建强大且抗错误的PowerShell脚本时,确保输入值和条件的准确性至关重要。在这个目的上,您可以利用Test动词这一强大工具。

通过使用Test动词,您可以快速验证给定条件是否为真或假,从而能够根据结果执行不同的操作。在这个例子中,您将通过Test动词验证文件是否存在。

执行以下代码进行测试(Test-Path)验证文件是否存在(C:\MyFolder\example.txt)在指定的$filePath,并根据结果打印相应的消息。

# 定义文件路径。
$filePath = "C:\MyFolder\example.txt"

# 测试文件是否存在,并根据结果打印消息
if (Test-Path $filePath) {
    Write-Host "The file exists at $filePath."
}
else {
    Write-Host "The file does not exist at $filePath."
}
Validating a resource via the Test verb

结论

您现在对PowerShell批准的动词有了基本的了解,以及如何在脚本和命令中有效使用它们。通过利用这些动词,您现在可以为各种任务和场景创建强大、高效且一致的PowerShell解决方案。

这个教程只是你成为熟练的PowerShell用户之旅的开始。为什么不学习其他经过批准的动词,比如数据操作动词(即导出导入排序)和生命周期动词(即启动停止)?立即将你的PowerShell技能提升到更高的水平吧!

Source:
https://adamtheautomator.com/powershell-approved-verbs/