There is a different result type between the Windows and Linux expression which is why it throws the “Incompatible types”. The Linux expression is a plural string, the Windows expression is a plural tuple string. One way to cater for that could be something like
Windows results
Q: if not (windows of operating system) then ((name of it & ", Running, " & pathname of image file of it) of processes whose (name of it as lowercase = "besclient")) else ((service name of it &", "& state of it & ", " & image path of it) of services whose (service name of it as lowercase contains "besclient"))
A: BESClient, Running, "C:\Program Files (x86)\BigFix Enterprise\BES Client\BESClient.exe"
T: 1612.237 ms
I: plural string
Linux results
Q: if not (windows of operating system) then ((name of it & ", Running, " & pathname of image file of it) of processes whose (name of it as lowercase = "besclient")) else ((service name of it &", "& state of it & ", " & image path of it) of services whose (service name of it as lowercase contains "besclient"))
A: BESClient, Running, /opt/BESClient/bin/BESClient
A: BESClient, Running, /opt/BESClient/bin/BESClient
T: 7854