如何格式化多个Pssession结果的输出以在每台计算机名之间包含空格

问题描述 投票:0回答:1

也许这比我想的要简单,但是我无法根据搜索结果在网上找到答案。

我创建了一个函数,该函数从文件中获取计算机名称列表,并将其存储在变量中,以用于创建新的pssession并连接到所有计算机,然后使用invoke-command在users目录上运行get-childitem并获取每台计算机上的所有用户目录。然后,我在脚本块上使用select来选择目录名称,lastwritetime和计算机名。这将输出到具有3列的表格,并且工作正常。我将结果存储在变量中,然后将其输出到文件中。我的问题是,有没有一种方法可以根据计算机名称轻松地将结果分组?我希望输出以每台计算机的换行符的形式返回。我现在得到的是所有机器的结果。我知道如果我为每台计算机使用一个foreach循环和invoke-command,则输出将是分开的,但是对于许多枚举每台计算机的机器来说,将需要一些时间。这是我的输出示例:

UserDirectory   LastWriteTime   ComputerName
USer1           1/2/2020 13:50  Computer14
User6           1/2/2020 13:15  Computer14
User8           9/25/2019 17:14 Computer14
User3           8/29/2019 11:17 Computer14
User1           1/2/2020 13:50  Computer02
User6           1/2/2020 13:15  Computer02
User8           9/25/2019 17:14 Computer02
User1           1/2/2020 13:50  Computer05
User6           1/2/2020 13:15  Computer05
User2           12/21/2019 3:23 Computer05
User7           10/24/2019 10:13Computer05
User8           9/25/2019 17:14 Computer05
User6           1/2/2020 13:55  Computer15
User1           1/2/2020 13:50  Computer15
User4           11/9/2019 11:36 Computer15
User8           10/5/2019 21:10 Computer15

这是我希望拥有的输出。

UserDirectory   LastWriteTime   ComputerName
USer1           1/2/2020 13:50  Computer14
User6           1/2/2020 13:15  Computer14
User8           9/25/2019 17:14 Computer14
User3           8/29/2019 11:17 Computer14

User1           1/2/2020 13:50  Computer02
User6           1/2/2020 13:15  Computer02
User8           9/25/2019 17:14 Computer02

User1           1/2/2020 13:50  Computer05
User6           1/2/2020 13:15  Computer05
User2           12/21/2019 3:23 Computer05
User7           10/24/2019 10:13Computer05
User8           9/25/2019 17:14 Computer05

User6           1/2/2020 13:55  Computer15
User1           1/2/2020 13:50  Computer15
User4           11/9/2019 11:36 Computer15
User8           10/5/2019 21:10 Computer15
powershell formatting output invoke-command
1个回答
0
投票

使用组项目工作。可能不是最好的方法,但是它可以工作。

$test = $results | group-Object Computername
$hash = $results | group-Object Computername -AsHashTable -AsString

foreach ($name in $test.name){
      $hash.$name + ''
}
© www.soinside.com 2019 - 2024. All rights reserved.