8
我使用ValidateSet屬性上的我的PowerShell的功能參數,一個像這樣:我可以在PowerShell函數參數的ValidateSet屬性中使用常量嗎?
[ValidateSet('Development','Test','Production')]
[string]$Context
我有反覆,這是整個腳本的項目很多地方。這些文字字符串可以用常量替換嗎?
我使用ValidateSet屬性上的我的PowerShell的功能參數,一個像這樣:我可以在PowerShell函數參數的ValidateSet屬性中使用常量嗎?
[ValidateSet('Development','Test','Production')]
[string]$Context
我有反覆,這是整個腳本的項目很多地方。這些文字字符串可以用常量替換嗎?
不,它必須是文字或腳本塊。 scriptblock選項似乎毫無意義,因爲它似乎使用scriptblock的文字(字符串)值而不是執行它。
如此有效地,從我的測試中,您必須使用文字。
如果你使用動態參數,你可以做到這一點,但這只是爲了DRY的矯枉過正。
如果你嘗試使用一個變量,它將不起作用(ISE會給你紅色的波浪形狀)。幫助文本錯誤地說它必須是一個常量,但它意味着文字。
我創建了一個常量:
Set-Variable -Option Constant
,它仍然無法正常工作。
我用ValidateScript得到了更好的結果。我創建了一個函數IsValidContext。至少我可以將上下文字符串保存在一個地方,稍後擴展有效的列表,而不用大驚小怪。 param( [ValidateScript({IsValidContext $ _})] [string] $ Context ) –
@MatthewMacFarland是的,但它不會完成這種方式。 – briantist
@MatthewMacFarland,順便說一句,你可以添加另一個答案,以防其他人使用:) – briantist