在 C# PSObject PSPropertyInfo 中没有 return 值,而 PS 命令行有 return 值
In C# PSObject PSPropertyInfo does not return value when PS command-line does return value
在 C# 中,我尝试使用以下命令获取计算机的 IP 地址(该命令在 PowerShell 中运行良好,并且确实显示了 IP 地址):
在 PowerShell 中:
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled='True'" -ComputerName $env:ComputerName | Select -Property IPAddress
PowerShell 输出:
{1.2.3.4}
{5.6.7.8}
当我转身并尝试从 C# 中的 PowerShell 命令获取值(存储在结果中)时,如下所示:
foreach (PSObject obj in results) {
foreach (PSPropertyInfo objProperties in obj.Properties) {
string pName = objProperties.Name.ToString(); // returns "IPAddress"
**string pValue = objProperties.Value.ToString(); // returns "System.String[]" and not an actual IP address**
}
}
pValue 的值为“System.String[]”,而不是实际的 IP 地址值。但是 objProperties.Name 成功 returns 键名“IPAddress”。
如何获取实际 IP 地址而不是“System.String[]”?
如问题的评论中所述,这种情况下的解决方法是:
((string[])objProperties.Value).First()
在 C# 中,我尝试使用以下命令获取计算机的 IP 地址(该命令在 PowerShell 中运行良好,并且确实显示了 IP 地址):
在 PowerShell 中:
Get-CimInstance Win32_NetworkAdapterConfiguration -Filter "IPEnabled='True'" -ComputerName $env:ComputerName | Select -Property IPAddress
PowerShell 输出:
{1.2.3.4}
{5.6.7.8}
当我转身并尝试从 C# 中的 PowerShell 命令获取值(存储在结果中)时,如下所示:
foreach (PSObject obj in results) {
foreach (PSPropertyInfo objProperties in obj.Properties) {
string pName = objProperties.Name.ToString(); // returns "IPAddress"
**string pValue = objProperties.Value.ToString(); // returns "System.String[]" and not an actual IP address**
}
}
pValue 的值为“System.String[]”,而不是实际的 IP 地址值。但是 objProperties.Name 成功 returns 键名“IPAddress”。
如何获取实际 IP 地址而不是“System.String[]”?
如问题的评论中所述,这种情况下的解决方法是:
((string[])objProperties.Value).First()