Powershell可以';t访问对象属性字段和值

Powershell可以';t访问对象属性字段和值,powershell,cmd,powershell-4.0,Powershell,Cmd,Powershell 4.0,我正在努力在Powershell中获得cmd命令输出。我运行的cmd命令如下所示 $obj = cmd.exe /c 'twiddle -s localhost -u xyz -p abc get "service=tempservice" stats' 如果我打印对象,它会将值打印为 Stats=[Ljava.lang.String;@c43b53 我想在PowerShell中访问此字符串对象的值,以便可以拥有此$obj的所有字段和值。我希望在stats中获得一个名为“count=1020

我正在努力在Powershell中获得cmd命令输出。我运行的cmd命令如下所示

$obj = cmd.exe /c 'twiddle -s localhost -u xyz -p abc get "service=tempservice" stats'
如果我打印对象,它会将值打印为

Stats=[Ljava.lang.String;@c43b53
我想在PowerShell中访问此字符串对象的值,以便可以拥有此$obj的所有字段和值。我希望在stats中获得一个名为“count=1020132”的属性和字段的值

我的Get成员没有任何属性或方法可以在这方面帮助我


我尝试过使用$obj.“property”,但没有帮助。

我更喜欢使用使用命名捕获组的正则表达式。 请友好一点,根据您的需要调整正则表达式,所使用的只是一个示例

    $str ='Stata=[Ljava.lang.String;@c43b53';
    [regex]$rx = "(?<trailer>\S+)\=\[(?<first>\S+)\.(?<second>\S+)\.(?<third>\S+);(?<leader>\S+)";

    $m = $rx.Match($str);
    $m;
    $m.Groups["trailer"].Value;
    $m.Groups["first"].Value;
    $m.Groups["second"].Value;
    $m.Groups["third"].Value;
    $m.Groups["leader"].Value;
$str='Stata=[Ljava.lang.String;@c43b53';
[regex]$rx=“(?\S+)\=\[(?\S+)\(?\S+)\(?\S+);(?\S+)”;
$m=$rx.Match($str);
百万美元;
$m.Groups[“拖车”]价值;
$m.Groups[“first”].值;
$m.Groups[“second”].值;
$m.Groups[“第三方”]价值;
$m.Groups[“leader”].值;

我编辑了这个问题。你能看一下这个命令吗,特别是引号。我尝试过&但没有成功,从PowerShell中调用任何外部程序都只返回字符串(其唯一属性是它们的
.Length
)。您必须进行字符串分析以提取感兴趣的信息。更新您的问题,以描述您需要从返回的字符串中提取哪些信息-假设感兴趣的信息甚至存在。我正在统计信息中查找count=100201属性。请直接向您的问题添加说明-不要使用注释。看起来您得到的是Java对象的默认字符串表示形式,它不包含实际的属性值,因此您必须使
twidle
以文本形式输出对象内容的适当序列化表示形式,例如JSON形式。顺便提一下:不需要涉及
cmd.exe
in调用
twidle
-直接从PowerShell调用即可。那么如何使twidle输出成为合适的序列化表示?我只需要计数值。它可以是json或xmlWrite output$m Write output---Write output$m.Groups[“count”]。值组:{$obj,$obj}成功:真捕获:{$obj}索引:0长度:4值:$obj---$objit不打印值yetI无法理解您的问题。是的,您可以使用写入输出或写入主机。但上述代码仍在我的系统上运行,并生成屏幕输出。我在每行中添加了一个semikolon,以防止其他行结尾(LF或CRLF)