Search code examples
powershellcsvparsingpowershell-3.0text-parsing

check csv for blank fields and write output if exist blank


This is a csv example:

1- 2018-11-07,hostname-184,IP_INFO, 10.2334.40.334, 255.255.255.0, 
2 - 2018-11-07,hostname-184,IP_INFO, 334.204.334.68, 255.255.255.0,
3- 2018-11-07,hostname,7.1.79-8,IP_INFO, 142.334.89.3342, 255.255.255.0,
4- 2018-11-07,hostname,7.1.80-7,IP_INFO, 13342.221.334.87, 255.255.255.0, 
5- 2018-11-07,hostname-155,IP_INFO, 142.2334.92.212, 255.255.255.0, 
6 - 2018-11-07,hostname-184,IP_INFO, , , 1
7- 2018-11-07,hostname-184,IP_INFO, 10.19334.60.3343, 255.255.255.0, 

so how can i check if the las two spaces are in blank (like line 6 ) ?

The idea is to use something like this:

    $contentdnsparsed = Get-Content $destination_RAW_NAS\DNS_NAS_PARSED_0 

For($i=0;$i -lt $contentdnsparsed.count;$i++){
if($contentdnsparsed[$i] -match "running")
    {

 $Global:MatchDNS = $OK } Else {$Global:MatchDNS = $FAIL }

    }

If match "something" in the space 4 and 5 after the "," output = OK else = FAIL.

Thank you guys


Solution

  • Although you give us a rather bad example of a CSV file, you should use the Import-Csv cmdlet. Because the csv has no headers, you need to supply these with the -Header parameter like below:

    $csvContent = Import-Csv -Path "$destination_RAW_NAS\DNS_NAS_PARSED_0" -Header @("Date","HostName", "InfoType","IPAddress","Subnet")
    $csvContent | ForEach-Object {
        # test for empty IPAddress fields in the CSV
        if ([string]::IsNullOrEmpty($_.IPAddress)) {
            Write-Host "$($_.HostName) = FAIL" -ForegroundColor Red
            # somewhere in your code you have declared the variables $Global:MatchDNS, $FAIL and $OK I guess..
            $Global:MatchDNS = $FAIL
        }
        else {
            Write-Host "$($_.HostName) = OK" -ForegroundColor Green
            $Global:MatchDNS = $OK
        }
    }
    

    Hope that helps