2015-11-22 21 views
1

我正在使用powershell 5.我在不同的ps1文件中創建了一個枚舉,並且我喜歡將它加載到另一個具有CmdletBinding的ps1中。如何在CmdletBinding之前加載另一個powershell文件?

我嘗試下面的代碼,但沒有奏效。有沒有辦法在CmdletBinding之前加載enum ps1?

. ".\GeneratorType.ps1" 

[CmdletBinding()] 
Param 
(
     [Parameter(ValueFromPipeline=$True,ValueFromPipelineByPropertyName = $True,Mandatory=$False)]  
     [GeneratorType]$type = [GeneratorType]::All 
) 
+0

棘手。與函數一起工作,但並非沒有。看起來'[CmdletBinding()]'必須先到... – sodawillow

+0

是的。我也注意到了。如果我不在參數中使用該枚舉,則可以在'CmdletBinding'之後加載它,但我想在我的一個參數中使用枚舉。我找到的唯一解決方案是在同一個文件中定義枚舉類型。我不想把'CmdletBinding'放入函數中。 –

+1

您可以隨時點源類腳本cmdlet的腳本之外,調用它之前,像一個包裝腳本:-)或建立班級您的個人資料 – sodawillow

回答

0

可以這樣想:PowerShell腳本是一個獨立的ScriptBlock。

[CmdletBinding()]屬性是param-block的一部分。根據語言規範,參數塊必須是ScriptBlock的第一部分(如果存在)。

所以,不,你不能CmdletBinding屬性之前放東西。

你可以做什麼,是你的GeneratorTypes.ps1腳本轉換爲一個模塊,並使用

#Requires -Modules 

,以確保當帕拉姆塊解釋它的加載。

相關問題