我有一个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!
答案 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 }