我有一个powershell哈希表,它是通过查看服务及其状态生成的,
生成这些值的代码如下所示:
$table = @{}
foreach ($service in $services)
{
$obj = Get-Service -name $service -ErrorAction SilentlyContinue
if ($obj -ne $null){
$table[$service] = $obj.status
}
}
'attempt 1 at outputting the table, shows the inline response
$table | out-string | write-host
'attempt 2 at outputting the table, gives no output
$table
'attempt 3 at outputting the table, shows no output
write-output $table
我尝试将值写入屏幕,如下所示(仅通过调用hastable或使用write-output,结果是相同的,
这在测试示例中运行良好,但在我的脚本中却不行:
PS C:\WINDOWS\system32> $table
Name Value
---- -----
Service1 Running
Service2 Running
在我的脚本中,我得到了以下内容:
Name Value
---- -----
{Service1, Service2 ... {Stopped, Stopped, Stopped}
我尝试使用format-table和write-output / write-host的各种组合强制输出
有人能给予我指点一下吗?
2条答案
按热度按时间u0sqgete1#
为什么你决定用散列表?在这段代码中看不出任何理由。
顺便说一句,格式化功能是格式化到给定的输出-你正在使用屏幕格式化,并试图将其推到文件。这是错误的。使用导出功能。当然,你可以尝试简单的输出文件,但在一般情况下,对象是复杂的生物与一些层次结构。屏幕只为你的眼睛-停止思考你所看到的,但什么是真的是。
t9aqgxwy2#
另一种可能性是,假设您不需要哈希表来进行进一步的处理,这将使您能够更好地控制输出格式:
输出: