如何在 Powershell 中执行相当于 $PROGPATH/program 的 bash 操作?

2024-04-12

在 GNU/Linux 中我会这样做:

PROGPATH=/long/and/complicated/path/to/some/bin
$PROGPATH/program args...

但在 Powershell 中如果我尝试这样做:

$PROGPATH=\long\and\complicated\path\to\some\bin
$PROGPATH\program args...

I get:

At script.ps1:2 char:...
+ $PROGPATH\program args ...
+          ~~~~~~~~
Unexpected token '\program' in expression or statement.
+ CategoryInfo          : ParserError: (:) [], ParseException
+ FullyQualifiedErrorId : UnexpectedToken

那么我该如何做这个我知道如何在 bash、Powershell 中做的简单事情呢?


js2010 的有用答案 https://stackoverflow.com/a/57677699/45375显示正确的解决方案:

因为你的命令名称/路径包含变量引用 ($PROGPATH/...),您必须使用它来调用它&: & $PROGPATH\program args...
如果分组表达,(...) https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Operators#grouping-operator--被使用,或者子表达式,$(...) https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_Operators#subexpression-operator--参与。

Additionally, the same applies if a command name/path is quoted ('...' or "...")[1], as is required if the path contains spaces, for instance.

To put it differently: Direct invocation is only supported if the command name/path is a verbatim, unquoted string[1]; in all other cases, & must be used.

As for why:

有必要强制将一个声明解释为command,即将其解析为论证模式(见下文),从而导致命令执行而不是表达评估.

PowerShell 有两个基本功能解析模式 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_parsing:

  • 论证模式, which 工作原理就像传统外壳,其中第一个标记是命令名/路径,例如 cmdlet 或外部程序,后续标记代表参数,仅当它们包含 shell 时才需要引用元字符(字符。对于 PowerShell 具有特殊含义,例如用于分隔标记的空格)。

  • 表达方式, which 就像表达式一样工作编程语言.

PowerShell 根据语句做出决定第一个令牌应用什么解析模式:

如果除其他外,第一个标记以变量引用或者是一个带引号的字符串, PowerShell 解析中表达方式.

  • 在表达模式下,\ 开始一个新的令牌,以及无法识别的令牌\program结果出现您看到的语法错误。
  • (如果您使用过/,它会被解释为除法运算符, and program不是有效的除数操作数。)

[1] Note that if your executable path is a literal string (doesn't contain variable references of expressions) you may alternatively `-escape individual characters (spaces) in lieu of enclosing entire string in '...' or "...", in which case & is then not necessary; e.g.:
C:\Program` Files\Notepad++\notepad++.exe
With a literal string you can even employ partial single- or double-quoting as long as the first token is unquoted; e.g.:
C:\"Program Files"\Notepad++\notepad++.exe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Powershell 中执行相当于 $PROGPATH/program 的 bash 操作? 的相关文章

  • Powershell从字符串中获取数字

    大家好 我正在尝试使用 powershell 从用户 ID 中获取号码 我们使用的格式是名字的第一个字母 姓氏的前四个字母和学生 ID 因此名为 John Smith ID 123456 的学生将是 jsmit123456 如果用户的名字少
  • 这种说法是否恰当。 if (0 != 表达式或变量) {} 在java中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • powershell函数开关参数与字符串数组

    我正在努力理解以下函数的输出 function testApp param string appName switch sw false string test string test2 Write Host appName sw test
  • 路径中的波形符不会扩展到主目录

    假设我有一个名为Foo位于 home user my home user也代表为 我想要一个变量 a Foo 然后做 cd a I get bash cd Foo No such file or directory 但是如果我这样做cd F
  • 如何将可选标志解析为 Maybe 值?

    我正在尝试使用optparse 应用程序 https hackage haskell org package optparse applicative 0 11 0 2解析一个Maybe String但我找不到任何地方如何处理Maybe 我
  • 如何从 Powershell 访问 COM 对象上的索引属性

    我正在使用 Powershell 通过 COM 与 Windows 7 任务计划程序服务进行通信任务调度2 0接口 http msdn microsoft com en us library aa383600 VS 85 aspx 例如 I
  • powershell 和 cmd 之间的文件大小不同[重复]

    这个问题在这里已经有答案了 我正在使用一点processconf js工具来构建configuration json来自多个文件 json files 这是我正在使用的命令 node processconf js file1 json fi
  • powershell:如何将 get-date 格式化为字符串并删除 0?

    当我运行 get date cmdlet 时 我尝试通过以下方式消除日期中的任何前导零 filedate get date uformat m d Y filedate filedate ToString Replace 0 这将返回 01
  • C - 具有可变数量参数和命令行参数的函数

    我需要排序n按字典顺序排列的作为参数数量可变的函数的参数的字符串数量 在main函数中 字符串被读取为命令行参数 这是我的代码 include
  • 有哪些基于对象的 shell?

    我打算写一个面向对象的shell 基于Python 我已经有很多想法了 但在实现它之前 我想通过一些现有的 shell 来激发我的灵感 我所说的面向对象的基本意思是 参数不仅仅是字符串数组 而且是对象数组 返回值也是一个对象 不仅有 std
  • 在yaml中写入#(在字符串中)

    我是新使用 yml 文件 用于我的框架中的翻译 我试图在翻译中添加一个 将是一个推特分享 blabla 这可能吗 因为文件将其翻译为评论 只需将值放在单引号或双引号内 它就不会被视为注释 就像是 en twitter share hasht
  • Swift 完成处理程序语法

    此代码用于回答此处的问题 如何在 Swift 中发出 HTTP 请求 https stackoverflow com questions 24016142 how to make an http request in swift let u
  • “Connect-MsolService”未被识别为 cmdlet 的名称

    PSCommand commandToRun new PSCommand commandToRun AddCommand Connect MsolService commandToRun AddParameter Credential ne
  • 用于验证 IIS 设置的 Powershell 脚本

    是否可以使用 Power Shell 脚本获取 IIS 设置 我希望使用脚本获取 检查以下信息 检查 Windows 身份验证提供程序是否正确列出 协商 NTLM 检查是否启用了 Windows 身份验证 Windows 身份验证高级设置
  • Powershell 4 对于 tls 1.2 来说太旧了?

    我有一个带有 powershell 4 的 Windows Server 2012R2 一个sql作业发出一个Invoke WebRequest https someserver file xml OutFile c tmp data xm
  • 检查文件是否存在,然后移动它

    我正在尝试在 powershell 中编写几行代码 以检查文件是否到达特定文件夹 如果该文件存在 请将其复制到另一个文件夹 如果该文件不存在 则无需执行任何操作 到目前为止我只有复制部分 cd C Move y C myfolder csv
  • 如何更改 Visual Studio Code“Powershell 集成控制台”?

    有谁知道如何安装 更新 PS 7 以供 VS Code Powershell 集成控制台使用 我可以在常规 powershell 终端上获取 PS 7 但 Powershell 集成控制台仍然是 PSVersion 5 1 我似乎不知道如何
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 对 CSV 文件中的列进行分组并连接另一列的值

    我刚刚开始使用 PowerShell 在任何地方都找不到这个问题的答案 尝试编写一个脚本来导入 CSV 文件并搜索该文件以查看是否有任何名称相同 如果名称相同 我想将所有这些值写在同一行上 并且只显示名称一次 例如 Name Number

随机推荐

  • 如何记录 REST API?

    如何记录 REST API 不仅仅是资源的文档 而且实际上是请求中发送的数据是什么以及响应中发回的数据是什么 知道某些东西期望发送 XML 并返回 XML 是不够有用的 或 JASN 管他呢 如何记录请求中发送的数据和响应中发回的数据 到目
  • Realm Swift:如何捕获 RLMException?

    我以为我做得正确 let realm try Realm do try realm write realm add myObject catch print something went wrong 但我仍然遇到崩溃而不是打印语句 我对避免
  • 我怎样才能有不同的提交来进行合并和冲突解决

    我将开发分支合并到我的功能分支中 这导致在解决我提交和推送的分支后出现合并冲突 现在的问题是合并和冲突解决更改位于一次提交中 很难找到解决冲突的方法 当存在合并冲突时 如何才能有两个单独的提交 一个用于合并 另一个用于冲突修复 如果你真的想
  • Angularjs 未捕获错误:[$injector:unpr]

    我正在用java开发购物网站 我正在使用angularjs 我对这些文件有问题 DashboardControll js use strict var app angular module DashboardApp app controll
  • MLlib MatrixFactorizationModel suggestProducts(user, num) 在某些用户上失败

    我训练了一个MatrixFactorizationModel https spark apache org docs 1 3 0 api java org apache spark mllib recommendation MatrixFa
  • 在 JPA 查询中转义冒号字符“:”

    我正在尝试通过使用 字符的 JPA 运行本机查询 特定实例在查询中使用 MySQL 用户变量 SELECT foo bar baz rownum if id foo rownum 1 1 as rownum id foo as rep id
  • 在 View AngularJS 中使用服务

    我对 angularJS 服务有疑问 我有简单的服务 angular module mainApp services factory AuthService function http var currentUser null var au
  • 删除过多的 try-catch 块

    我正在重构一个由其他开发人员编写的中型 WinForms 应用程序 几乎每个类的每个方法都被一个try catch堵塞 99 的情况下 这些 catch 块仅记录异常或清理资源并返回错误状态 我认为很明显这个应用程序缺乏适当的异常处理机制
  • 以逗号分隔的标签输入字段

    我正在开发一个网络应用程序 允许用户通过标签发布内容 但问题是 如果标签被comma并且文本字段值仍然相同 只是用户的视图会有所不同 一个例子是 YouTube 或 StackOverflow 目前我不需要它来检查数据库或任何东西 Than
  • Java 8 从 Map 中的匹配值中提取所有键

    我对 Java8 比较陌生 我有一个场景 我需要从 Map 中检索与对象匹配的所有键 想知道是否有一种方法可以获取所有键而无需再次从列表中迭代它们 Person java private String firstName private S
  • 如何在 Android 上使用 GraphQL 和 Retrofit?

    我是 GraphQL 的新手 但我已经使用 Retrofit 一段时间了 它易于使用且快速 GraphQL 在传递数据的方式方面与 REST API 有很大不同 关于在 Android 上使用 GraphQL 的教程确实不多 我只能找到这个
  • 使用 numpy.genfromtxt 填充缺失值

    尽管前面的问题提出了建议 9999 作为 numpy genfromtxt 的缺失值 https stackoverflow com questions 12274709 9999 as missing value with numpy g
  • 将默认值传递给表值参数 - SQL Server

    我在我们的一个存储过程中使用表值参数 这是我使用的语法 districtlist NumericList readonly NumericList是用户定义的表类型 但是 根据要求 我需要将默认值传递给该表值参数 districtlist
  • Boost 单元测试链接错误——abi 不匹配?

    我正在尝试使用 boost 构建一个单元测试 但链接器抱怨缺少函数 拿这个骨架代码 define BOOST TEST DYN LINK define BOOST TEST MAIN include
  • 无法使用如此大的 URL 生成 XML 文件

    我想使用下面的代码生成 XML 但是当我包含大 URL 时它会出错 甚至 cdata 也不起作用 xml new SimpleXMLElement
  • 数据框操作 - 捕获值的变化

    我目前有一个数据框 如下所示 它显示位置变化 添加 1 个单位 减去 1 个单位或不执行任何操作 0 我正在寻找带有净头寸的第二个数据框 该数据框可以是多头 1 或持平 0 假设不可能有净空头 1 头寸 因此逻辑是从 0 开始 当第一个 1
  • Android AudioTrack 缓冲问题

    好的 我有一个频率发生器 它使用 AudioTrack 将 PCM 数据发送到硬件 这是我使用的代码 private class playSoundTask extends AsyncTask
  • readOGR (rgdal) 无法从 XML 获取多边形名称

    我正在尝试导入英格兰 CCG 边界的 KML 地图 此处提供 200Kb http geoportal statistics gov uk datasets 1bc1e6a77cdd4b3a9a0458b64af1ade4 4 kml 进入
  • “cv::VideoCapture::open VIDEOIO(CV_IMAGES):引发 OpenCV 异常”

    当我使用 VsCode 调试器运行代码时 我根本没有收到任何错误 并且一切正常 但是当我尝试在没有调试器的情况下运行代码时 我收到此错误 ERROR 0 global C projects opencv python opencv modu
  • 如何在 Powershell 中执行相当于 $PROGPATH/program 的 bash 操作?

    在 GNU Linux 中我会这样做 PROGPATH long and complicated path to some bin PROGPATH program args 但在 Powershell 中如果我尝试这样做 PROGPATH