也许这比我想的要简单,但是我无法根据搜索结果在网上找到答案。
我创建了一个函数,该函数从文件中获取计算机名称列表,并将其存储在变量中,以用于创建新的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
使用组项目工作。可能不是最好的方法,但是它可以工作。
$test = $results | group-Object Computername
$hash = $results | group-Object Computername -AsHashTable -AsString
foreach ($name in $test.name){
$hash.$name + ''
}