0

这里是 Powershell 新手,上个月才开始玩弄它。我一直在试图找出使用它的方法,现在我正试图从我们的一些 unix 服务器中提取信息,并且很难解析数据以获得我需要的东西。基本上,我正在运行一个 ssh 命令来拉取服务器上的关闭等待数并将其输出到服务器名称以逗号分隔的文件。所以我的输出看起来像这样:

2,<server1>
3,<server2>
3,<server3>

等等......列表中有大约 70 台服务器。我希望能够查看第一列(#)以及任何超过特定数字(例如 250)的列,然后将其与服务器名称一起输出。我已经能够拆分行并仅搜索#,但无法弄清楚如何在不将其拉出的情况下仅搜索#,因此我可以将服务器名称连同它一起输出。

我的最后一次尝试,仍然不起作用是这样的:

get-content "cresultsf.txt" | %{$close = $_.split(","} | where-object {$_.$close[0] -gt 250}

上个月挑选了 PS 脚本,所以我对此很陌生。我今天可能已经阅读了 100 篇文章,试图将这些文章放在一起,因此我们将不胜感激!谢谢!

4

2 回答 2

4

我做了如下尝试:

文本.txt:

1, server1
200, server2
1, server3
400, server4
15, server5
119, server6
120, server7
300, server8
290, server9

我的命令:

$data = import-csv -path .\test.txt -header close, server
$data | where-object{$_.close -gt 250} |format-table -autosize

输出是:

close server
----- ------
400   server4
300   server8
290   server9    
于 2013-11-15T04:32:13.190 回答
1

需要 V3:

get-content "cresultsf.txt" | %{
 [PSCustomObject]@{
               $split = $_.split(',')
               Close = [int]$split[0]
               Server = $split[1]
               }
 } | where { $_.close -gt 250 }

Powershell 是关于对象的,所以如果你创建然后使用对象通常会更容易。[PSCustomObject] 类型加速器允许您直接从哈希表创建对象。由于您正在从文件中读取文本数据,因此所有值都是 [string]。Close 属性是 [int] 的明确大小写,以防止在进行比较时出现意外结果。

于 2013-11-15T03:35:47.943 回答