在 C# 的 powershell 中 运行 RemoteDesktop commandlet 时出错
Error while running RemoteDesktop commandlets in powershell from C#
我已经尝试使用 C# 在 powershell 中执行 RemoteDesktop commandlet。
以下是我的程序:
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);
}
}
}
当我调用命令时出现错误 System.Management.Automation.CommandNotFoundException: The term 'Get-RDRemoteApp' is not recognized as the name of a cmdlet, function, script file, or operable program.
如何实现调用 RemoteDesktop 命令行开关?
我解决了这个问题。我将 运行 模式从 Any CPU.
更改为 x64
您需要为所有命令设置持久运行空间。您的代码现在的方式是,每个命令都在其自己的隔离运行空间中执行。添加以下代码:
var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
powershell.Runspace = runspace;
到 using
块的开头应该可以解决您的问题。
我遇到了同样的问题并找到了你的post。
默认 InitialSessionState
仅加载核心开关,ExecutionPolicy
设置为最严格:Microsoft.PowerShell.ExecutionPolicy.Default
.
为了解决这个问题,我必须设置 ExecutionPolicy
如下所示:
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Bypass;
iss.ImportPSModule("RemoteDesktop");
PowerShell powershell = PowerShell.Create(iss);
...
我已经尝试使用 C# 在 powershell 中执行 RemoteDesktop commandlet。
以下是我的程序:
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);
}
}
}
当我调用命令时出现错误 System.Management.Automation.CommandNotFoundException: The term 'Get-RDRemoteApp' is not recognized as the name of a cmdlet, function, script file, or operable program.
如何实现调用 RemoteDesktop 命令行开关?
我解决了这个问题。我将 运行 模式从 Any CPU.
更改为 x64您需要为所有命令设置持久运行空间。您的代码现在的方式是,每个命令都在其自己的隔离运行空间中执行。添加以下代码:
var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
powershell.Runspace = runspace;
到 using
块的开头应该可以解决您的问题。
我遇到了同样的问题并找到了你的post。
默认 InitialSessionState
仅加载核心开关,ExecutionPolicy
设置为最严格:Microsoft.PowerShell.ExecutionPolicy.Default
.
为了解决这个问题,我必须设置 ExecutionPolicy
如下所示:
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ExecutionPolicy = Microsoft.PowerShell.ExecutionPolicy.Bypass;
iss.ImportPSModule("RemoteDesktop");
PowerShell powershell = PowerShell.Create(iss);
...