Aha, it needed Unicode encoding! Found it here:
You want to
invoke a PowerShell script from a batch file, a
logon script, scheduled task, or any other non-PowerShell application.
PowerShell.exe in the following way:
Supplying a single string argument to PowerShell.exe
invokes PowerShell, runs the command as though you had typed it in the interactive shell, and then exits. Since the path to a script often contains spaces, you invoke the script by placing its name between single quotes, and after the & character. If the script name does not contain spaces, you can omit the single quotes and & character. This technique lets you invoke a PowerShell script as the target of a logon script,
advanced file association, scheduled task and more.
If you are the author of the program that needs to run PowerShell scripts or commands, PowerShell lets you call these scripts and commands much more easily than calling its command-line interface. For more information about this approach, see Recipe 15.13
, “Add PowerShell Scripting to Your Own Program.”
If the command becomes much more complex than a simple script call, special characters in the application calling PowerShell (such as cmd.exe
) might interfere with the command you want to send to PowerShell. For this situation, PowerShell supports an
Base64 encoded representation of the
Unicode string you want to run. Example 1-4
demonstrates how to convert a string containing PowerShell commands to a Base64 encoded form.
Example 1-4. Converting PowerShell commands into a Base64 encoded form
Once you have the encoded string, you can use it as the value of the
parameter, as shown inExample 1-5
Example 1-5. Launching PowerShell with an encoded command from cmd.exe