Script blocks are pieces of executable PowerShell code. You typically create them by enclosing code in braces.
To dynamically create script blocks from inside your script, here is a way how you can turn a string into a script block.
$scriptblock = [ScriptBlock]::Create('notepad'
This way, your code can first create the code as string, then turn the string into a script block, and then submit the script block to whatever cmdlet you want (for example, Invoke-Command):
PS> Invoke-Command -ScriptBlock 'notepad'
Cannot convert the "notepad" value of type "System.String" to type
"System.Management.Automation.ScriptBlock". (raised by: Invoke-Command)
PS> Invoke-Command -ScriptBlock ([ScriptBlock]::Create('notepad'))