Powershell函數(shù)中的CmdletBinding()是怎么回事?-創(chuàng)新互聯(lián)

參考文章:

創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元東川做網(wǎng)站,已為上家服務(wù),為東川各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

Don Jones https://technet.microsoft.com/en-us/library/ff677563.aspx

powershell 幫助文檔:

help about_functions_advanced_parameters

help about_common_parameters

把這三部分內(nèi)容都看完了,應(yīng)該也大概了解函數(shù)中的CmdletBinding()是做什么用的了,官方的文檔都是英文的,看起來一般會頭大。以下就是我用通俗的語言來做的描述,更簡單易懂一些。

這個功能的引入是從Powershell Version 2開始的,叫做函數(shù)的高級功能,在函數(shù)的聲明出啟用以后,可以調(diào)用我們所說的通用參數(shù):

  • -Verbose

  • -Debug

  • -ErrorAction

  • -WarningAction

  • -ErrorVariable

  • -WarningVariable

  • -OutVariable

  • -OutBuffer

  • -PipeLineVariable

通過放在函數(shù)開始部分可以很簡單的啟用訪問這些通用參數(shù)。如下所示:

[CmdletBinding()]

param()

啟用這個高級屬性以后,就可以很容易的通過像使用命令行一樣,給函數(shù)添加一些命令行的特色,調(diào)用命令很的通用參數(shù)。以下是一個最簡單的例子,打開一個ISE,把以下的內(nèi)容復(fù)制下去:

function Go-Advanced {

  [cmdletbinding()]param()

}

param() 這個關(guān)鍵字還是必須要有的,即使你沒有在函數(shù)中定義任何參數(shù);

嘗試運行一下這個函數(shù),然后再打一下中橫線,怎么樣,就看到能夠調(diào)用的這些通用參數(shù)了吧。

Powershell 函數(shù)中的CmdletBinding()是怎么回事?

以下舉幾個例子來調(diào)用這些通用參數(shù),先來說說Verbose的用法。

還是在ISE中輸入以下代碼

Function Go-Verbose {

    [CmdletBinding()]Param()

    Write-Verbose "Alright, you prefer talkative functions. First of all, I appreciate your wish to learn more about the common parameter -Verbose. Secondly, blah blah.."

    Write-Host "This is self-explanatory, anyway."

}

再執(zhí)行以下,看看是不是以下結(jié)果,通過這個例子,你就明白verbose是怎么出來的,這個單詞是很難翻譯的,只能是通過例子弄明白是什么意思。

Powershell 函數(shù)中的CmdletBinding()是怎么回事?

再舉一個例子,就是調(diào)用ShouldContinue這個方法,這個在寫程序時還是很重要的,比如你想做一些破壞性的操作,程序?qū)懙慕咽且欢ㄒ粋€框出來,問一下再去執(zhí)行,那種SilientContinue做法不推薦。

以下還是代碼:

Powershell 函數(shù)中的CmdletBinding()是怎么回事?

這段代碼還是要在函數(shù)執(zhí)行時加一個 -confirm參數(shù)的。如果想不加這個參數(shù)也要跳出這個框來,這樣就需要一個額外的操作。把環(huán)境變量$ConfirmPreferece 設(shè)置成低??匆韵麓a和執(zhí)行效果。

Function Remove-ByForce {

    [CmdletBinding(SupportsShouldProcess)]

    Param([String]$File)

    $ConfirmPreference = "Low"

    If ($PSCmdlet.ShouldContinue("Are you sure that you know what you are doing?","Delete with -Force parameter!")) {

            Remove-Item $File -Force

    } Else {

            "Mission aborted!"

    }

}

Remove-ByForce test

Powershell 函數(shù)中的CmdletBinding()是怎么回事?

以上就是兩個基本的例子,接下來的文章會討論

param()中的[parameter()]對變量的影響。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站標題:Powershell函數(shù)中的CmdletBinding()是怎么回事?-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article4/cdcsoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、全網(wǎng)營銷推廣標簽優(yōu)化、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司