将数据添加到变量会导致单行字符串

时间:2016-02-07 01:57:47

标签: string powershell

我有一个PowerShell PSCustomObject ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // do stuff } } 我正在使用多个$result语句进行过滤。

Where-Object

如果我输出到控制台或者我输送到$SatServers = $Global:result | Where-Object {$_ -like '*sat?2:00*' -and ` $_.MaintenanceWindow -notmatch 'all.da.servers' -and ` $_.Server -match "^IT"} | % {"{0}" -f $_.Server} $SatServers += $Global:result | Where-Object {$_ -like '*sat?18:00*' -and ` $_.MaintenanceWindow -notmatch 'all.da.servers' -and ` $_.Server -match "^IT"} | % {"{0}" -f $_.Server} $SatServers | Out-File d:\path\file.txt 它看起来很棒但是当我将输出发送到如上所示的变量时,我会在一行上输出。

为了获得具有多行结果的变量,我是否缺少某些东西? -Thanks!

1 个答案:

答案 0 :(得分:1)

您需要先将$SatServers初始化为数组。首先调用make $SatServers一个字符串对象,当你将一个字符串追加到字符串(+ =)时,它只是将它添加到最后一个字符串的末尾。

字符串:

$string = "Hello"
$string += "Frode"

$string.GetType() | ft -AutoSize

IsPublic IsSerial Name   BaseType     
-------- -------- ----   --------     
True     True     String System.Object

$string
HelloFrode

阵列:

$string = @()
$string += "Hello"
$string += "Frode"

$string.GetType() | ft -AutoSize

IsPublic IsSerial Name     BaseType    
-------- -------- ----     --------    
True     True     Object[] System.Array

$string
Hello
Frode

您还可以在字符串末尾添加一个NewLine,方法是在Foreach-Object - scriptblock中进行以下更改(但我个人更喜欢阵列解决方案)。

% { ("{0}" -f $_.Server) + [environment]::NewLine }