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類的實例,因此它們不是獨立的可執行檔。