2017-10-27 11 views
0

.netには、用途によって異なるように見えるタイプがあります。 2例: 1)シンプルです。タイプはsystem.booleanです。この型の値は真、偽、0,1とすることができます。つまり、ブール値は整数のように動作することができます。 2)私の必要性に近い。我々は(これが最後のアプリケーションログのエントリを取得し、我々は通常、重大度(警告、エラーなど)を呼び出してプロパティを選択)Powershellと.Net。文字列 - 整数の関連付けで新しいタイプを作成する

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

を実行すると、結果はこのタイプが整数としてすることができ

TypeName: System.Diagnostics.EventLogEntryType 

ですこのように、実際のカスタムログレベルと同じ動作で、静的マッピング "int to string"を使っていくつかの型を作成したいと思います。 のように"No log" = 0,"Information" = 1など

誰もそのようなことを達成する方法を知っていますか?

+0

いいえ、ブール値は決して0または1ではありません。それは真または偽です。それは整数のように動作しません、数学的操作を持っていません。タイプは「異なって見える」わけではありません。タイプ間の暗黙的および明示的*変換*があります。 –

+0

'entrytype'はブール値ではありません。列挙型です。文字列のために混同しているのは、列挙の*値の名前*です。マッピングはありません。 *基礎となる*値は整数です。 –

+0

[enumsのドキュメント](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/enum)を確認してください。また、[新しいPowershellの機能:列挙型](https://blogs.technet.microsoft.com/heyscriptingguy/2015/08/26/new-powershell-5-feature-enumerations/) –

答えて

0

何が起こっているのかは列挙型です。

次の操作を行うことにより、列挙型の値を見ることができます:あなたが独自に作成することができます

$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は失敗します。

+0

は私が必要とするもののように見えます。ありがとう –

関連する問題