Please advise, any insight as to what i need to do to have the variable passed successfully would be much appreciated.
This works successfully, but works on each FQDN in the piped list one at a time. i have 100+ servers, so this can take longer than one would think. like 1-6 seconds per server
    Write-Host "Confirm correct OS is installed" -ForegroundColor Yellow -BackgroundColor Black
    $FQDNs | ForEach-Object {
        Invoke-Command -ComputerName $_ -Credential $Credentials -ScriptBlock { 
            $OS = (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
            Write-Host "$Using:_`: $OS" -ForegroundColor Green -BackgroundColor Black
            Write-Output "$Using:_`: $OS"
        }
    }
} 
if i add the -Parallel parameter, it fails immediately with the error below. How else am i supposed to give the variable if an automatic variable is the only way I'm seeing that foreach-object pipes them? (I'm hoping that's wrong)
ForEach-Object: C:\Scripts\Checklist.ps1:53
Line |
  53 |      $FQDNs | ForEach-Object -Parallel {
     |               ~~~~~~~~~~~~~~~~~~~~~~~~~~
     | The value of the using variable '$using:_' cannot be retrieved because
     | it has not been set in the local session.
Here's the script with the Parallel parameter inserted to show exactly where i'm doing that
    Write-Host "Confirm correct OS is installed" -ForegroundColor Yellow -BackgroundColor Black
    $FQDNs | ForEach-Object -Parallel {
        Invoke-Command -ComputerName $_ -Credential $Credentials -ScriptBlock { 
            $OS = (Get-CimInstance -ClassName CIM_OperatingSystem).Caption
            Write-Host "$Using:_`: $OS" -ForegroundColor Green -BackgroundColor Black
            Write-Output "$Using:_`: $OS"
        }
    }
}