This is a frequently asked question. A filter parameter is actually a string. You can form it this way. -Or has lower precedence than -like, so you don’t need the parentheses:
Get-ADUser -Filter "SamAccountName -like '*$person*' -OR Name -like '*$person*'"
I don’t pretend to understand the black magic when a script block is converted into a string and then passed into get-aduser.