PowerShell Cmdlet

cmdlet發音為:”command-lets”,它是在PowerShell環境中使用的羽量級命令。 這些是在PowerShell環境中實現特殊功能的特殊命令。cmdlet遵循“動詞-名詞”模式,例如:set-childItem

Windows PowerShell運行時在命令行中提供的自動化腳本的上下文中調用這些命令。 它還通過Windows PowerShell應用程式編程介面API以編程方式調用它們。

1. Cmdlet是什麼?

PowerShell中的cmdlet執行操作,並將Microsoft .NET Framework對象返回到管道中的下一個命令。 Cmdlet可以接收對象作為輸入,也可以將結果輸出為對象,這使其適合用作管道中的接收者。

如果編寫cmdlet,則必須實現一個cmdlet類,該類派生自兩個專門的cmdlet基類之一。 派生類必須:

  • 聲明一個屬性,該屬性將派生類標識為cmdlet
  • 定義用屬性標識的公共屬性,這些屬性將公共屬性標識為cmdlet的參數。
  • 要處理記錄,它會覆蓋一種或多種輸入處理方法。
  • 可以使用Import-Module cmdlet來直接加載包含該類的程式集,或者可以創建一個主機應用程式,該主機應用程式使用System.Management.Automation.Runspaces.Initialsessionstate API來加載該程式集。 兩種方法都提供對cmdlet功能的編程訪問和命令行訪問。

2. Cmdlet術語

Windows PowerShell cmdlet中經常使用的術語如下:

Cmdlet屬性
Windows PowerShell定義了幾個用於向cmdlet添加通用功能的屬性。 它包括cmdlet屬性,該屬性將Microsoft .NET框架類標識為cmdlet類。

Cmdlet參數
它提供了允許cmdlet訪問輸入的機制。參數可以直接從命令行接受輸入,也可以接受通過管道傳遞給cmdlet的對象。

參數集
在同一命令中使用一組參數來執行特定操作。 PowerShell中的cmdlet可以具有多個參數集,但是每個參數集必須至少具有一個唯一參數。

Windows PowerShell使用參數集允許編寫一個cmdlet,該cmdlet可以針對不同的方案執行不同的操作。 參數集讓我們可以根據參數向用戶公開不同的參數; 它返回用戶指定的不同資訊。

動態參數
動態參數會在運行時添加到cmdlet。 通常,當另一個參數的參數設置為特定值時,會將這些參數添加到cmdlet。

輸入處理方式
輸入處理方法允許cmdlet執行輸入處理,預處理和後處理的操作。 cmdlet用來處理其記錄的那些方法將作為輸入接收。 輸入處理方法包括System.Management.Automation.Cmdlet.EndProcessing方法,System.Management.Automation.Cmdlet.ProcessRecord方法和System.Management.Automation.Cmdlet.BeginProcessing方法。

事務
邏輯命令組被視為單個任務。 如果組中的任何命令失敗,任務將自動失敗。 用戶可以選擇拒絕或接受在事務中執行的操作。 Windows PowerShell版本2.0中引入了對事務的支持。

3. Cmdlet與命令有什麼區別?

cmdlet在以下方面與其他命令Shell程式環境中的命令不同:

  • 通常,命令不支持其解析,輸出格式或錯誤表示。 Windows PowerShell運行時處理這三種(解析,輸出格式或錯誤表示)。
  • cmdlet從管道而不是從字元流處理輸入對象,並且cmdlet將輸出對象傳遞到管道。
  • Cmdlet一次處理一個對象,因此它們是面向記錄的。
  • Cmdlet是.NET Framework類的實例,因此它們不是獨立的可執行檔。