Hello!
This is because $1 .. $9 is a macros substituted by NetXMS agent itself - they represent arguments for a parameter. If you need to pass $ sign as part of a command, you should use $$.
So your command should looks like:
ExternalParameter = rootInodes:/usr/sbin/df -F ufs -o i / | /bin/tail -1 | /usr/local/bin/awk '{print $$4}' | /bin/sed -e 's/%//g'
First example works, because wc -l gives you only one word, so { print $1 } transformed to { print } doesn't actually affect anything.
Best regards,
Victor