C# 为什么在远程计算机上以编程方式(使用参数)执行powershell cmdlet不会';如果使用enter/import-pssession cmdlet,则无法工作?

C# 为什么在远程计算机上以编程方式(使用参数)执行powershell cmdlet不会';如果使用enter/import-pssession cmdlet,则无法工作?,c#,.net,powershell,powershell-2.0,C#,.net,Powershell,Powershell 2.0,我有远程机器的PSSession对象,并且说,我正在尝试执行“命令” 方法1(在执行实际命令之前调用enter-pssession): 方法2(在执行实际命令之前调用导入pssession): 这两种方法都不起作用,错误信息也很清楚。它表示“术语‘Command’无法识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。” 方法3-works(使用Invoke命令并使用scriptblock和session对象执行cmd) 我没有

我有远程机器的PSSession对象,并且说,我正在尝试执行“命令”

方法1(在执行实际命令之前调用enter-pssession):

方法2(在执行实际命令之前调用导入pssession):

这两种方法都不起作用,错误信息也很清楚。它表示“术语‘Command’无法识别为cmdlet、函数、脚本文件或可操作程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。”

方法3-works(使用Invoke命令并使用scriptblock和session对象执行cmd)

我没有被阻止,因为我正在使用方法3,并且能够继续我的工作

但我仍然不确定为什么方法1或2不起作用。我相信如果我让方法1或2起作用,将命名参数传递给目标机器可能会更容易

换句话说,正如Musaab所说,我们只能在交互模式下使用enter/import会话cmdlet


这正是我的问题——为什么我不能以编程方式使用它们?如果我知道该怎么做?

pssessions仅在交互模式下工作,因此您必须创建一个PSSession,然后使用Invoke命令在该会话上执行命令

嗨,换句话说,这是我的问题?为什么我不能以编程方式使用enter/import pssession?为什么我们只能在交互式mdoe中使用它们?您好,DreamerIt正是Powershell的设计方式。我不确定这背后的原因是什么。很抱歉,如果我无法添加任何有用的内容,但您可以确保没有做错任何事情,这些命令仅用于交互使用:-)
Command cmd = new Command("enter-pssession");
cmd.Parameters.Add("Session",session);
pipeline.Commands.Add(cmd);
pipeline.Commands.Add(command);
Command cmd = new Command("import-pssession");
cmd.Parameters.Add("Session",session);
pipeline.Commands.Add(cmd);
pipeline.Commands.Add(command);
Command cmd = new Command("invoke-command");
cmd.Parameters.Add("session", session);
cmd.Parameters.Add("scriptblock", ScriptBlock.Create(command.ToString()));
if (null != argumentList)
{
    cmd.Parameters.Add("ArgumentList", argumentList);
}