I created a script to collect remote SQL servers
#### Get number of SQL servers
$sql_servers = @()
foreach ($server in $servers){
# Loop through each server and check if server has service "MSSQLSERVER"
Try{
$sql = get-service -computername $server.DNSHOstname -ErrorAction Stop | where {$_.Name -eq "MSSQLSERVER"} | select MachineName
$sql_servers += New-Object PSObject -Property @{
Machine = $sql.MachineName
}
}
catch [Exception]
{
if ($_.Exception.GetType().Name -like "*COMException*") {
Write-Verbose -Message ('{0} is unreachable' -f $server.DNSHOstname) -Verbose
}
else{
Write-Warning $Error[0]
}
}
}
I'm getting desired results but variable contains multiple empty lines:
$sql_servers
Machine
-------
SQL1
SQL2
SQL3
I tried following to remove those blank lines without success.
$sql_servers = $sql_servers | Where-Object {$_}
$sql_servers = $sql_servers | ? {$_ -ne ""}
How to remove empty (blank) lines from variable ?
EDIT:
I found a workaround by removing hashtable property, instead of
$sql_servers += New-Object PSObject -Property @{
Machine = $sql.MachineName
}
}
i just set $sql_servers += $sql
and no empty lines, but i'm curious is it possible to remove empty line using hash table.
Thanks