简体   繁体   中英

Error while running RemoteDesktop commandlets in powershell from C#

I have tried executing RemoteDesktop commandlets in powershell using C#.

The following is my program :

static void Main(string[] args)
        {
            using (var powershell = PowerShell.Create())
            {
                powershell.Commands.AddCommand("Import-Module").AddArgument("remotedesktop");
                powershell.Invoke();
                powershell.Commands.Clear();
                powershell.AddCommand(@"Get-RDRemoteApp");
                powershell.AddCommand(@"out-string");
                foreach (var result in powershell.Invoke())
                {
                    Console.WriteLine(result);
                }
            }
        }

When I invoke command it gives the error System.Management.Automation.CommandNotFoundException: The term 'Get-RDRemoteApp' is not recognized as the name of a cmdlet, function, script file, or operable program.

How can I achieve calling RemoteDesktop commandlets ?

I solved this. I change run mode to x64 from Any CPU.

You need to set a persistent runspace for all of your commands. The way your code is now, each command is being executed in it's own isolated runspace. Adding the following code:

var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
powershell.Runspace = runspace;

to the beginning of the using block should fix your problem.

I faced the same issue and found your post.

Default InitialSessionState only loads Core commandlets and ExecutionPolicy is set to the most restrictive: Microsoft.PowerShell.ExecutionPolicy.Default .

To work around this, I had to set the ExecutionPolicy as shown below :

InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Bypass;
iss.ImportPSModule("RemoteDesktop");

PowerShell powershell = PowerShell.Create(iss);
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM