.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 个将失败。