2

我正在使用 powershell 5。我在不同的 ps1 文件中创建了一个枚举,我喜欢将它加载到另一个具有 CmdletBinding 的 ps1 中。

我尝试了下面的代码,但没有奏效。有没有办法在 CmdletBinding 之前加载枚举 ps1?

. ".\GeneratorType.ps1" 

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

1 回答 1

3

可以这样想:PowerShell 脚本是一个自包含的 ScriptBlock。

[CmdletBinding()]属性是param-block. 根据语言规范,如果存在,参数块必须是 ScriptBlock 的第一部分。

所以不,你不能在CmdletBinding属性之前放任何东西。

您可以做的是将GeneratorTypes.ps1脚本转换为模块并使用

#Requires -Modules

确保在解释 param 块时加载它。

于 2016-06-18T21:29:23.643 回答