格式帮助:最后一个变量不应该出现

时间:2016-06-01 12:37:40

标签: powershell powershell-v3.0

我写了一封代码,向某人发送电子邮件。无论何时运行代码,他们都要求在屏幕上打印数据。我使用了Write-Host cmdlet,如下所示。

Write-Host "server: $serverName `t ipaddress: $ipAddressValue `t process: $processName `t status: $statusString"

数据出现在PowerShell上,所有数据都是直线,因为它应该与最后一个变量$statusstring分开,状态结果出现在不同的行中,与其他3个变量的顺序不同。

  • 进程:TestTrack服务器状态:正在运行

  • 进程:eventlog status:正在运行

  • 进程:WMSVC状态:已停止

  • 进程:TFSJobAgent状态:正在运行

  • 进程:Dhcp状态:正在运行

  • 处理UI0Detect状态:已停止

我有什么想法可以让状态全部成为一条直线?

2 个答案:

答案 0 :(得分:0)

您似乎想要表格输出。为什么不创建对象并使用正确的格式化cmdlet?

$props = [ordered]@{
  server    = $serverName
  ipaddress = $ipAddressValue
  process   = $processName
  status    = $statusString.Trim()
}
$o = New-Object -Type PSObject -Property $props

从对象(或对象列表)中,您可以创建如下字符串输出:

$o | Format-Table | Out-String

或HTML输出如下:

$o | ConvertTo-Html

答案 1 :(得分:0)

最佳选择:停止使用Write-Host。您无法使用该cmdlet将输出控制为显示在一行上。最好在制作自定义PSObject来构建输出,然后将其传递给Format-Table