您好,登錄后才能下訂單哦!
參考文章:
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()是做什么用的了,官方的文檔都是英文的,看起來一般會頭大。以下就是我用通俗的語言來做的描述,更簡單易懂一些。
這個(gè)功能的引入是從Powershell Version 2開始的,叫做函數(shù)的高級功能,在函數(shù)的聲明出啟用以后,可以調(diào)用我們所說的通用參數(shù):
-Verbose
-Debug
-ErrorAction
-WarningAction
-ErrorVariable
-WarningVariable
-OutVariable
-OutBuffer
-PipeLineVariable
通過放在函數(shù)開始部分可以很簡單的啟用訪問這些通用參數(shù)。如下所示:
[CmdletBinding()]
param()
啟用這個(gè)高級屬性以后,就可以很容易的通過像使用命令行一樣,給函數(shù)添加一些命令行的特色,調(diào)用命令很的通用參數(shù)。以下是一個(gè)最簡單的例子,打開一個(gè)ISE,把以下的內(nèi)容復(fù)制下去:
function Go-Advanced {
[cmdletbinding()]param()
}
param() 這個(gè)關(guān)鍵字還是必須要有的,即使你沒有在函數(shù)中定義任何參數(shù);
嘗試運(yùn)行一下這個(gè)函數(shù),然后再打一下中橫線,怎么樣,就看到能夠調(diào)用的這些通用參數(shù)了吧。
以下舉幾個(gè)例子來調(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é)果,通過這個(gè)例子,你就明白verbose是怎么出來的,這個(gè)單詞是很難翻譯的,只能是通過例子弄明白是什么意思。
再舉一個(gè)例子,就是調(diào)用ShouldContinue這個(gè)方法,這個(gè)在寫程序時(shí)還是很重要的,比如你想做一些破壞性的操作,程序?qū)懙慕咽且欢ㄒ粋€(gè)框出來,問一下再去執(zhí)行,那種SilientContinue做法不推薦。
以下還是代碼:
這段代碼還是要在函數(shù)執(zhí)行時(shí)加一個(gè) -confirm參數(shù)的。如果想不加這個(gè)參數(shù)也要跳出這個(gè)框來,這樣就需要一個(gè)額外的操作。把環(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
以上就是兩個(gè)基本的例子,接下來的文章會討論
param()中的[parameter()]對變量的影響。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。