亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-07-04 18:14:20 來源:網絡 閱讀:12900 作者:raincity 欄目:系統運維

參考文章:

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

powershell 幫助文檔: 

help about_functions_advanced_parameters

help about_common_parameters


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


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

  • -Verbose

  • -Debug

  • -ErrorAction

  • -WarningAction

  • -ErrorVariable

  • -WarningVariable

  • -OutVariable

  • -OutBuffer

  • -PipeLineVariable

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

[CmdletBinding()]

param()


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


function Go-Advanced {

    [cmdletbinding()]param()

}


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


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

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

以下舉幾個例子來調用這些通用參數,先來說說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."

}

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

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


再舉一個例子,就是調用ShouldContinue這個方法,這個在寫程序時還是很重要的,比如你想做一些破壞性的操作,程序寫的健壯是一定要跳一個框出來,問一下再去執行,那種SilientContinue做法不推薦。

以下還是代碼:

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


這段代碼還是要在函數執行時加一個 -confirm參數的。如果想不加這個參數也要跳出這個框來,這樣就需要一個額外的操作。把環境變量$ConfirmPreferece 設置成低。看以下代碼和執行效果。



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 函數中的CmdletBinding()是怎么回事?



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

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





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉禾县| 乌拉特后旗| 博爱县| 神池县| 乌兰浩特市| 垣曲县| 阳山县| 民县| 固安县| 尖扎县| 射洪县| 浮山县| 城固县| 卫辉市| 堆龙德庆县| 郯城县| 苗栗市| 新安县| 宣威市| 盱眙县| 通江县| 水城县| 丹巴县| 千阳县| 瓮安县| 富顺县| 墨玉县| 连南| 贵德县| 鲁甸县| 平舆县| 高青县| 清流县| 衡水市| 潞西市| 龙游县| 南皮县| 凤山县| 长乐市| 文山县| 连南|