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!

2
  • 3
    Did you type doskey /?. Commented Jun 1, 2020 at 7:58
  • 1
    It takes decades to understand Windows. You need to read the API once a year for ten years. Commented Jun 1, 2020 at 8:02

1 Answer 1

14

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

DOSKEY startnow=script.ps1 $1 

So, you could call;

startnow -thisIsFirst 
Sign up to request clarification or add additional context in comments.

3 Comments

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?
What is your windows version? I think you do not need that "call powershell" part.
The second = is the beginning of your command and is ignored by cmd.exe.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.