Powershell 我们的文件只打印了我一半的结果

Powershell 我们的文件只打印了我一半的结果,powershell,csv,split,save,Powershell,Csv,Split,Save,我目前有一个CSV文件,有2440行数据。数据如下所示: server1:NT:Y:N:N:00:N server2:NT:Y:N:n:33:N 我的问题是,当脚本到达$server.Split(“:”)[0]| Out文件real.csv-Append-Force部分时,出于某种原因,它只输出1264行,而不是全部2440行到“real.csv”。但是,当我删除real.csv-Append-Force文件时,$server存储所有2400个服务器名称 有人知道为什么会发生这种情况吗?将spl

我目前有一个CSV文件,有2440行数据。数据如下所示:

server1:NT:Y:N:N:00:N server2:NT:Y:N:n:33:N 我的问题是,当脚本到达
$server.Split(“:”)[0]| Out文件real.csv-Append-Force
部分时,出于某种原因,它只输出1264行,而不是全部2440行到“real.csv”。但是,当我删除real.csv-Append-Force文件时,
$server
存储所有2400个服务器名称


有人知道为什么会发生这种情况吗?

split[1]-包含“NT”
更改为“split[1]-eq“NT”
。但处理csv的方式很奇怪。。为什么不使用
Import CSV-Delimiter':'`并处理对象?为什么不将
$split[0]
作为
$thing
直接输出到
real.CSV
?第二个是获取内容,foreach是多余的。我同意这是一种奇怪的方式,但我的问题是文件本身。如果我使用
Import CSV
,它会一直认为注释是标题,并丢弃文件的其余部分,而不管我是否跳过了这些行。我也不能使用
$split[0]| Out File results.csv-Append-Force
,因为它一直在打印1264行而不是全部2400行,这是我面临的主要问题。
$newCsvPath = Get-Content .\sever.csv |
              Where-Object { $_ -notmatch '^#|^$|^"#' } 

[int]$windows = 0
[int]$totalsever = 0
$Results = @()

$date = Get-Date -Format g

Clear-Content .\results.csv -Force

foreach ($thing in $newCsvPath) {
    $totalsever++
    $split = $thing -split ":"
    if ($split[1] -contains "NT") { 
        $windows++
        $thing | Out-File results.csv -Append -Force
    } else {
        continue
    }
}

Clear-Content .\real.csv -Force
$servers = Get-Content results.csv
foreach ($server in $servers) {
    $server.Split(':')[0] | Out-File real.csv -Append -Force
}