Powershell和.Net.使用字符串 - 整数关联创建新类型



.net 中的某些类型可能根据使用情况而有所不同。2个例子:1)简单。我们有类型system.boolean。这种类型的值可以是真、假和 0,1 - 这意味着布尔值可以像整数一样。2)接近我的需要。如果我们执行(这将获取最后一个应用程序日志条目并选择我们通常称为严重性(警告、错误等)的属性)

$a = (Get-EventLog -LogName Application -Newest 1).entrytype
$a | get-member

结果是

TypeName: System.Diagnostics.EventLogEntryType

此类型可以是字符串的整数,因此

$a
Information
$a -gt 1
True
$a -gt 4
False

问题:我想创建一些具有相同行为的静态映射"int 到字符串"的类型 - 实际上是自定义日志级别。如"No log" = 0"Information" = 1等。

有谁知道如何实现这样的事情?

所以正在发生的事情是一个枚举(枚举)。

你可以通过以下方式查看枚举的值:

$a = (Get-EventLog -LogName Application -Newest 1).entrytype
$a.value__

您可以创建自己的:

enum LogTypes{
    This = 0
    Is = 1
    A = 2
    Enum = 3
    In = 4
    Action = 5
}
[LogTypes]$a = (Get-EventLog -LogName Application -Newest 1).entrytype.value__
$a

枚举对于强制使用有限数量的选项并使内容更易于阅读很有用

enum LogTypes{
    This = 0
    Is = 1
    A = 2
    Enum = 3
    In = 4
    Action = 5
}
Function TestFunction([LogTypes]$Test){
    Write-Output $Test
}
TestFunction -Test This #Works
TestFunction -Test 3 #Works
TestFunction -Test 11 #Fails
TestFunction -Test Cat #Fails
前 2 个

将起作用,但后 2 个将失败。

最新更新