有時(shí)Powershell的函數(shù)需要互斥,讓用戶只能在其中二選一。
要給腳本創(chuàng)建一組互斥的參數(shù),可以給他們打上不同的屬性標(biāo)志,同時(shí)確保它們的唯一性(假設(shè)不能自動(dòng)識(shí)別參數(shù)類型).
function Test-ParameterSet { [CmdletBinding(DefaultParameterSetName='number')] param ( [int] [Parameter(ParameterSetName='number', Position=0)] $id, [string] [Parameter(ParameterSetName='text', Position=0)] $name ) $PSCmdlet.ParameterSetName $PSBoundParameters }
上面函數(shù)有兩個(gè)參數(shù),-id和-name.用戶只能使用其中一個(gè),同時(shí)不能兩個(gè)都用。同時(shí)這里例子也教了大家怎么去獲取用戶輸入的參數(shù)。
多個(gè)互斥參數(shù)可以通過“ParameterSetName”來區(qū)分不同的參數(shù)設(shè)置(也包括集合參數(shù))
事實(shí)上你也可以分配多個(gè)參數(shù)跟一個(gè)參數(shù),即一個(gè)固定參數(shù)和一個(gè)可選參數(shù)。
function Test-ParameterSet { [CmdletBinding(DefaultParameterSetName='NonCredential')] param ( $id, [Parameter(ParameterSetName='LocalOnly', Mandatory=$false)] $LocalAction, [Parameter(ParameterSetName='Credential', Mandatory=$true)] [Parameter(ParameterSetName='NonCredential', Mandatory=$false)] $ComputerName, [Parameter(ParameterSetName='Credential', Mandatory=$false)] $Credential ) $PSCmdlet.ParameterSetName $PSBoundParameters if ($PSBoundParameters.ContainsKey('ComputerName')) { Write-Warning 'Remote Call!' } }
Test-ParameterSet 函數(shù)告訴你:當(dāng)使用“NonCredential”時(shí),-ComputerName是可選;當(dāng)用戶使用“-Credential”參數(shù)時(shí)“-ComputerName”又變成必選參數(shù),如果使用了“-LocalAction”參數(shù),將不能使用-ComputerName和-Credential。
標(biāo)簽:鶴崗 湛江 運(yùn)城 德州 濟(jì)南 六盤水 岳陽 山南
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Powershell互斥參數(shù)使用實(shí)例》,本文關(guān)鍵詞 Powershell,互斥,參數(shù),使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。