当从C#或控制台运行时,PowerShell返回不同的结果

问题描述:

对于命令Get-MsolDomainStatus属性(看起来是一个字符串)返回为“已验证”,但是当从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