I thought this would be straightforward, just filtering my array, smh.
$serverEnv.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
# This is what I'm getting
ComputerName Env
------------ ---
server1 PROD
server1
server2 PROD
# I'm trying to get all servers that don't have a null or empty Env
ComputerName Env
------------ ---
server1 PROD
server2 PROD
# Tried this, but getting the ssame list with the blank Env records
$serverEnv | where-object { $_.Env -ne $null -or $_.Env -ne "" }
It's a logic problem. -and, not -or ($_.env -eq "" in this case) (beware of arrays on the left side of -ne):
$serverenv = 'computername,env
server1,prod
server1,
server2,prod' | convertfrom-csv
$serverenv | where-object { $_.Env -ne $null -or $_.Env -ne "" }
computername env
------------ ---
server1 prod
server1
server2 prod
$serverenv | where-object { $_.Env -ne $null -and $_.Env -ne "" }
computername env
------------ ---
server1 prod
server2 prod
You could put a list on the left:
$serverenv | where-object { $null,"" -ne $_.env }
computername env
------------ ---
server1 prod
server2 prod
I was trying backquote zero, but that seems the same as empty space.
"`0" -eq ''
True