Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
902 views
in Technique[技术] by (71.8m points)

powershell - How do I force declared parameters to require explicit naming?

I'm having a hard time thinking this through. if I wanted all declared parameters to require explicit naming when they're set and I wanted to pick up anything unnamed from the $args variable, how would I do it?

If my script declared the following parameters:

param($installdir, $compilemode, $whatever) 

then passing a list of files (in which case I don't want to specify the installation directory, a compile mode, etc.) the first three parameters would gobble my arguments. So, I would like to pass:

c:> MyScript file-1.cs file-2.cs file-3.cs file-4.cs 

and get all 4 strings appear $args, or alternatively, call:

c:> MyScript -CompileMode simple file-1.cs -InstallDir c:emp file-2.cs

and get values for $compilemode and $installdir with $args containing 2 files... how can I do that?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

ok, figured it out. declare like this:

param(
   $installdir, 
   $compilemode, 
   $whatever, 
   [Parameter(Position=0, ValueFromRemainingArguments=$true)] $args
   )

thanks to @latkin, who had already answered this at: Powershell non-positional, optional params


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...