【问题标题】:How to pass command line arguments to a PowerShell script invoked by a doskey如何将命令行参数传递给由 doskey 调用的 PowerShell 脚本
【发布时间】:2020-09-19 11:15:48
【问题描述】:

我有一个caller.cmd 文件,它的 DOSKEY 设置如下:

DOSKEY startnow=call powershell getscalled.ps1 

现在脚本getscalled.ps1 在参数集中定义了两个开关参数,如下所示:

param(
    [Parameter(Mandatory=$false,ParameterSetName='first')]
    [switch]$thisIsFirst,
    [Parameter(Mandatory=$false,ParameterSetName='second')]
    [switch]$thisIsSecond
) 

因此,一次只能提供两个参数之一。我希望使用我设置的 DOSKEY 从命令行本身提供参数。类似的东西:

startnow -thisIsFirst  

关于如何实现这一点的任何帮助? 谢谢!

【问题讨论】:

  • 你输入了吗doskey /?
  • 理解 Windows 需要几十年的时间。您需要在十年内每年阅读一次 API。

标签: windows powershell batch-file cmd doskey


【解决方案1】:

像这样创建宏(所以使用 $1 $2... 作为参数);

DOSKEY startnow=script.ps1 $1

所以,你可以打电话;

startnow -thisIsFirst  

【讨论】:

  • 是的,我对此进行了更多检查,发现最后的$* 将接受任意数量的参数。但我有一个奇怪的问题。我必须使用== 而不是=,即DOSKEY startnow==call powershell getscalled.ps1 $*。否则它不起作用。 === 这里有什么区别?有什么想法吗?
  • 你的windows版本是多少?我认为您不需要那个“调用 powershell”部分。
  • 第二个 = 是命令的开头,被 cmd.exe 忽略。
猜你喜欢
  • 2013-10-11
  • 2017-02-07
  • 1970-01-01
  • 2020-05-18
  • 2014-03-08
  • 2013-10-22
  • 2016-12-19
  • 1970-01-01
  • 2016-10-26
相关资源
最近更新 更多