当从C#或控制台运行时,PowerShell返回不同的结果
问题描述:
对于命令Get-MsolDomain
Status
属性(看起来是一个字符串)返回为“已验证”,但是当从C#经由PowerShell.Invoke()
执行相同的命令时,它将作为整数返回。许多命令和属性就是这种情况。当从C#或控制台运行时,PowerShell返回不同的结果
如何获得字符串Status
而不是整数?
答
您的声明最有可能返回来自枚举的值。枚举元素有一个字符串和一个整数表示,后者可以通过嵌套属性value__
访问。
就拿System.DayOfWeek
枚举:
PS C:\>$dow = [enum]::GetValues([type]'System.DayOfWeek') PS C:\>$dow Sunday Monday Tuesday Wednesday Thursday Friday Saturday PS C:\>$dow | % { '{0}: {1}' -f $_.value__, $_ } 0: Sunday 1: Monday 2: Tuesday 3: Wednesday 4: Thursday 5: Friday 6: Saturday PS C:\>$dow | % { [int]$_ } 0 1 2 3 4 5 6
默认情况下一个enum元素显示为一个字符串,但是如果你使用它的value__
财产或把它在它转换为你得到一个整数的上下文整数表示而不是字符串表示。请参阅this Technet article。