【问题标题】:the term is not recognized as the name of a cmdlet, function, script file, or operable program该术语未被识别为 cmdlet、函数、脚本文件或可运行程序的名称
【发布时间】:2021-11-01 09:04:08
【问题描述】:

我正在尝试在我的 C# 程序中运行 Powershell 命令,但出现错误

该术语未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,如果包含路径,请验证路径是否正确,然后重试。

我什至在 Powershell 中手动复制了这个完全相同的命令,它确实有效。

代码如下

PowerShell ps = PowerShell.Create();
var cmd = "scp -i \"path\\to\\ssh_key\" \"path\\to\\source_file\" root@192.168.x.xxx:/data/user_storage";
ps.AddCommand(cmd);
ps.Invoke();

【问题讨论】:

  • 如果您的问题尚未得到完全解答,请考虑 accepting 提供答案或提供反馈。

标签: c# .net powershell


【解决方案1】:

.AddCommand() PowerShell SDK 方法接受命令的名称文件路径,而不是整个命令行

要像在交互式 PowerShell 会话中一样执行命令行,请改用 .AddScript() 方法。

或者,仅将可执行文件名称/路径传递给.AddCommand(),然后为每个参数调用.AddArgument()

请注意,您并不一定需要 PowerShell 来执行带参数的可执行文件(除非您需要 shell 功能,例如 >)。

【讨论】:

    【解决方案2】:

    尝试使用具有管理员权限的 cmd 而不是 PowerShell

    你的工作可以完成

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2021-05-23
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多