Quantcast
Channel: How to handle command-line arguments in PowerShell - Stack Overflow
Viewing all articles
Browse latest Browse all 2

Answer by naivists for How to handle command-line arguments in PowerShell

$
0
0

You are reinventing the wheel. Normal PowerShell scripts have parameters starting with -, like script.ps1 -server http://devserver

Then you handle them in a param section (note that this must begin at the first non-commented line in your script).

You can also assign default values to your params, read them from console if not available or stop script execution:

 param (    [string]$server = "http://defaultserver",    [Parameter(Mandatory=$true)][string]$username,    [string]$password = $( Read-Host "Input password, please" ) )

Inside the script you can simply

write-output $server

since all parameters become variables available in script scope.

In this example, the $server gets a default value if the script is called without it, script stops if you omit the -username parameter and asks for terminal input if -password is omitted.

Update:You might also want to pass a "flag" (a boolean true/false parameter) to a PowerShell script. For instance, your script may accept a "force" where the script runs in a more careful mode when force is not used.

The keyword for that is [switch] parameter type:

 param (    [string]$server = "http://defaultserver",    [string]$password = $( Read-Host "Input password, please" ),    [switch]$force = $false )

Inside the script then you would work with it like this:

if ($force) {  //deletes a file or does something "bad"}

Now, when calling the script you'd set the switch/flag parameter like this:

.\yourscript.ps1 -server "http://otherserver" -force

If you explicitly want to state that the flag is not set, there is a special syntax for that

.\yourscript.ps1 -server "http://otherserver" -force:$false

Links to relevant Microsoft documentation (for PowerShell 5.0; tho versions 3.0 and 4.0 are also available at the links):


Viewing all articles
Browse latest Browse all 2

Trending Articles