【问题标题】:How to format output of Multiple Pssession Results to include a space between each computername如何格式化多个 Pssession 结果的输出以在每个计算机名之间包含一个空格
【发布时间】:2020-01-03 19:42:16
【问题描述】:

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

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

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

【问题讨论】:

  • AFAIK 没有内置方法可以实现您的要求。您必须自己创建它。您可以尝试使用Group-Object 将结果拆分为逻辑块并以一种单独的块的形式输出

标签: powershell formatting output invoke-command


【解决方案1】:

让它使用组对象工作。可能不是最好的方法,但它确实有效。

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

foreach ($name in $test.name){
      $hash.$name + ''
}

【讨论】:

    猜你喜欢
    • 2016-03-03
    • 2021-06-25
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    • 2023-04-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多