How to pass command line arguments to a PowerShell script invoked by a doskey
Asked Answered
C

1

5

I have a caller.cmd file which has a DOSKEY set like this:

DOSKEY startnow=call powershell getscalled.ps1 

Now the script getscalled.ps1 has two switch parameters defined in parameter sets like this:

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

So, only one of the two parameters can be provided at a time. I want the parameter to be provided from the command line itself using the DOSKEY that I have set up. Something like:

startnow -thisIsFirst  

Any help on how to achieve this? Thanks!

Cushion answered 1/6, 2020 at 7:22 Comment(2)
Did you type doskey /?.Circinate
It takes decades to understand Windows. You need to read the API once a year for ten years.Circinate
B
14

Create macro like this(so use $1 $2... for parameters);

DOSKEY startnow=script.ps1 $1

So, you could call;

startnow -thisIsFirst  
Bulletin answered 1/6, 2020 at 11:41 Comment(3)
Yes, and I checked more on this and found that $* at the end will accept any number of arguments. But I have a weird issue. I have to use == instead of =, i.e. DOSKEY startnow==call powershell getscalled.ps1 $*. It doesn't work otherwise. What is the difference of = and == here? Any idea?Cushion
What is your windows version? I think you do not need that "call powershell" part.Bulletin
The second = is the beginning of your command and is ignored by cmd.exe.Circinate

© 2022 - 2024 — McMap. All rights reserved.