Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 运行w32tm并将结果分配给变量会得到不同的输出_Powershell_Time_Batch File_Formatting_Cmd - Fatal编程技术网

Powershell 运行w32tm并将结果分配给变量会得到不同的输出

Powershell 运行w32tm并将结果分配给变量会得到不同的输出,powershell,time,batch-file,formatting,cmd,Powershell,Time,Batch File,Formatting,Cmd,我正试图按照以下步骤解析w32tm的输出,并将项目安排在一个易于阅读的数据表中。我注意到我在不同的列中得到了未排序、错误放置的结果 在测试中,如果我键入以下内容: w32tm /monitor /domain:mydomain.com.au /Threads:5 我对每台服务器进行了正确的排序和格式化,其NTP偏移量和ICMP延迟显示得非常完美,如下所示: kesvm001.mydomain.com.au[xxx.xxx.xxx.x:xxx]: ICMP: 37ms delay

我正试图按照以下步骤解析w32tm的输出,并将项目安排在一个易于阅读的数据表中。我注意到我在不同的列中得到了未排序、错误放置的结果

在测试中,如果我键入以下内容:

w32tm /monitor /domain:mydomain.com.au /Threads:5
我对每台服务器进行了正确的排序和格式化,其NTP偏移量和ICMP延迟显示得非常完美,如下所示:

kesvm001.mydomain.com.au[xxx.xxx.xxx.x:xxx]:
    ICMP: 37ms delay
    NTP: -0.0446479s offset from VM021.mydomain.com.au
        RefID: VM021.mydomain.com.au [xxx.xxx.xx.xxx]
        Stratum: 4
VM033.mydomain.com.au[xxx.xxx.xxx.xx:xxx]:
    ICMP: 50ms delay
    NTP: -0.0640493s offset from VM021.mydomain.com.au
        RefID: 80.84.77.86.rev.sfr.net [xx.xx.xx.xx]
        Stratum: 2
$output = & w32tm /monitor /domain:mydomain.com /threads:5
$output | Where-Object{!$_.StartsWith("Analyzing") -and !$_.StartsWith("           ") -and !$_.Contains(" of ") -and !$_.StartsWith("Stratum") -and !$_.StartsWith("delayoffset")}
如果我这样做:

$output = & w32tm /monitor /domain:mydomain.com.au /Threads:5
$output
我唯一能解释它的功能的方法是,它似乎也输出所有详细的信息

Getting AD DC list for mydomain.com.au
Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:Analyzing:delayoffset from VM021.mydomain.com.au
Stratum: 4

  1  2 -- (0 of 48)
 11 12  3 (9 of 48)
 16 13 17 (14 of 48)
 21 18 20 (18 of 48)
 26 18 27 (24 of 48)
 26 18 28 (25 of 48)
 26 18 30 (27 of 48)
 26 18 31 (28 of 48)
 26 18 32 (29 of 48)
 26 18 32 (29 of 48)
 33 34 32 (31 of 48)
 39 40 41 (38 of 48)
 42 46 41 (43 of 48)
 42 -- 41 (46 of 48)
 -- -- 41 (47 of 48)
 -- -- 41 (47 of 48)
 -- -- 41 (47 of 48)
 -- -- 41 (47 of 48)




kesvm001.mydomain.com.au[xxx.xxx.xxx.xxx:xxx]:
    ICMP: 37ms 
    NTP: -0.1127470s         RefID: VM021.mydomain.com.au [192.168.48.150]
        VM033.mydomain.com.au[xxx.xxx.xxdelayoffset from VM021.mydomain.com.au
Stratum: 2
delayoffset from VM021.mydomain.com.au
Stratum: 4
delayoffset from VM021.mydomain.com.au
Stratum: 3
delayoffset from VM021.mydomain.com.au
Stratum: 4
delayoffset from VM021.mydomain.com.au
Stratum: 4
delayoffset from VM021.mydomain.com.au
Stratum: 4
delayoffset from VM021.mydomain.com.au
Stratum: 4
delayoffset from VM021.mydomain.com.au

我认为这可能与使用多个线程有关,但即使将线程更改为1,也没有什么区别。这里到底发生了什么?我所做的(我认为)就是获取屏幕上正常显示的任何输出,并将其放入变量中…

它实际上做了它应该做的事情。它正在收集那里所有的产出。如果您在cmd控制台中运行它,您会注意到在显示结果之前,它实际上打印出了一些进度信息。在PowerShell中,它捕捉到了一切。如果你想过滤掉一些东西,你可以这样做:

kesvm001.mydomain.com.au[xxx.xxx.xxx.x:xxx]:
    ICMP: 37ms delay
    NTP: -0.0446479s offset from VM021.mydomain.com.au
        RefID: VM021.mydomain.com.au [xxx.xxx.xx.xxx]
        Stratum: 4
VM033.mydomain.com.au[xxx.xxx.xxx.xx:xxx]:
    ICMP: 50ms delay
    NTP: -0.0640493s offset from VM021.mydomain.com.au
        RefID: 80.84.77.86.rev.sfr.net [xx.xx.xx.xx]
        Stratum: 2
$output = & w32tm /monitor /domain:mydomain.com /threads:5
$output | Where-Object{!$_.StartsWith("Analyzing") -and !$_.StartsWith("           ") -and !$_.Contains(" of ") -and !$_.StartsWith("Stratum") -and !$_.StartsWith("delayoffset")}

是的,你是对的,谢谢你!你认为有没有办法简单地捕捉屏幕上最终留下的信息(“最终”输出),而不是所有其他进度信息?@ChristopherO'Neil从未听说过。我想不是