您的 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以獲取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 命令確認系統中的所有服務。

# 顯示溫馨的歡迎訊息
Write-Host "Welcome to the Invoke Example!"

# 調用 Get-Service 命令碼
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)并仅选择(Select-Object)每个进程的NameCPU属性。
# 使用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

通過“測試”動詞驗證資源

在創建強大且防錯的 PowerShell 腳本時,確保輸入值和條件的準確性至關重要。而您可以利用的一個強大工具就是“測試”動詞。

通過使用“測試”動詞,您可以快速驗證給定的條件是否為真或假,根據結果執行不同的操作。在這個示例中,您將使用“測試”動詞驗證文件是否存在。

執行以下代碼以測試(Test-Path)指定的$filePath位置是否存在文件(C:\MyFolder\example.txt),並根據結果打印相應的消息。

# 定義文件路徑。
$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 用戶之旅的開始。為什麼不學習其他批准的動詞,比如 數據操作動詞(即 ExportImportSort)和 生命周期動詞(即 StartStop)?立即將你的 PowerShell 技能提升到下一個水平吧!

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