Need help to pass and execute Function with arguments inside of a scriptblock


I am trying to get his to work, and got really close, but having an error being thrown and unable to handle it. Can really use some help with this. Maybe there is a better set of commands to accomplish this exact thing...

function MyFunction{
    param ($String)
    Write-Host "this is: $String"   

$ScriptBlock = {
    param ($MyFunction, $String)           
    invoke-expression $MyFunction.ScriptBlock.Invoke($String)    

$MyFunction = (get-item function:MyFunction)
$String = "123"
Invoke-Command -ComputerName <RemoteComputerName> -ScriptBlock $ScriptBlock -Credential $DomainCred -ArgumentList ($MyFunction,$String)

This is the result and error I receive:

this is: 123
Cannot convert '' to the type 'System.String' required by parameter 'Command'. Specified method is not supported.
    + CategoryInfo          : InvalidArgument: (:) [Invoke-Expression], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.InvokeExpressionCommand
    + PSComputerName        : hmidevcntsrv01