Minggu, 13 Februari 2011

Powershell - Switch Parameters

I am trying to build a function that detects duplicates. To try and figure out how to add parameters which take no input I Googled up this post:

http://powershell.com/cs/blogs/tips/archive/2009/06/26/using-switch-parameters.aspx
So, to use this in my own function, I added these definitions (snippet shown purely for demo purposes):
function Find-Duplicates
{
param(
[string]$filePath,
[switch]$recurse
)

# Test filePath for proper syntax
if(!$filePath.EndsWith("\")
{
$filePath = $filePath + "\"
}

# Create command for invoking search. This can be dynamically added to before invocation to avoid a bunch of if/then and switch conditions in the code.
$command = Get-ChildItem -Path $filePath

# Add Date recurse switch
if($recurse)
{
$command = $command + " -recurse"
}

# Run actual search
Invoke-Command $command
}
When I call this function, I can simply call the function without the parameter:
Find-Duplicates -Path C:
In this case, the if will see $recurse as $false and not append the extra switch to the $command string we are building.

To run this switch I simply add the -recurse switch I define in my param list:
Find-Duplicates -Path C:\ -recurse
The fact that the switch is present sets $recurse = $true within the script so the $command variable then becomes:
Get-ChildItem -Path $path -Recurse
In effect the [switch] param allows for turning things on by merely adding the parameter to the call.

0 komentar:

Posting Komentar

 
Powered by Blogger