Powershell-自定义枚举作为脚本的参数

时间:2019-05-31 16:16:49

标签: powershell

我有一个脚本,其中包含一组功能和说明并声明了枚举:

Add-Type -TypeDefinition @"
    public enum CleanUpPolicy {
        NoCleanUp,
        CleanUpByExpiration,
        CleanUpByMaxCount
    }
"@

以及带有该枚举的脚本参数,例如:

param (
    [CleanUpPolicy] $cleanUp = [CleanUpPolicy]::NoCleanUp
)

当我在本地运行脚本时,脚本运行良好。但是,该脚本应在远程计算机上下载并执行,这会带来问题。 在执行下载和执行操作时,出现错误 iex:无法找到类型[CleanUpPolicy] 这是下载并执行脚本的脚本:

iwr ("https://<some_url>/test.ps1") | iex

我做错了什么? 预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我认为add-type通过将类型定义编译为C#起作用。也许这出了什么问题。但是在PS 5中,您可以不使用add-type(也可以使用标记枚举)来创建枚举。 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_enum?view=powershell-5.1

Enum CleanUpPolicy {
  NoCleanUp
  CleanUpByExpiration
  CleanUpByMaxCount
}


[CleanupPolicy]0
NoCleanUp