使用参数从 cmd 运行 Powershell 命令

使用参数从 cmd 运行 Powershell 命令

我打算从 cmd shell 运行以下命令

git clone $(Get-Clipboard)

从资源管理器中的上下文菜单。

我该如何从命令 shell 运行这些程序?不起作用的是

PowerShell -Command "git clone $(Get-Clipboard)"

它给fatal: Too many arguments.

我怎样才能正确地退出 Get-Clipboard 命令?

答案1

我引用了官方网站的内容(https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_powershell_exe?view=powershell-5.1) 大致可以写成这样:

在 cmd.exe 中,没有脚本块(或 ScriptBlock 类型)这样的东西,因此传递给 Command 的值始终是字符串。您可以在字符串中编写脚本块,但它不会执行,而是表现得像您在典型的 PowerShell 提示符下键入它一样,将脚本块的内容打印出来给您。

传递给 Command 的字符串仍作为 PowerShell 代码执行,因此从 cmd.exe 运行时通常不需要脚本块花括号。要执行在字符串内定义的内联脚本块,可以使用调用运算符 &:

powershell -command "& {git clone $(Get-Clipboard)} %*"

答案2

文字脚本块

用一个文字脚本块将允许您从 cmd.exe 运行 PowerShell 命令:

powershell -command "& {git clone $(Get-Clipboard)} %*"

注册表示例

要从目录运行此程序,请右键单击将其添加到 Windows 注册表

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\git-clone]
@="Clone here"

[HKEY_CLASSES_ROOT\Directory\shell\git-clone\command]
@="Powershell -NoProfile -WindowStyle Hidden -Command "Set-Location -LiteralPath '%V' ; git clone $(Get-Clipboard)")\""

命令行参数-WindowStyle Hidden 阻止命令窗口可见-NoProfile选项阻止加载 PowerShell 配置文件加快这一进程。

(感谢 sionta)

相关内容