How to define a subroutine in PowerShell

Maxim V. Pavlov picture Maxim V. Pavlov · Feb 13, 2012 · Viewed 59.9k times · Source

In C# a RemoveAllFilesByExtenstion subroutine could be, for example, decleard like this:

void RemoveAllFilesByExtenstion(string targetFolderPath, string ext)
{
...
}

and used like:

RemoveAllFilesByExtenstion("C:\Logs\", ".log");

How can I defne and call a subroutine with the same signature from a PowerShell script file (ps1)?

Answer

Keith Hill picture Keith Hill · Feb 13, 2012

Pretty simple to convert this to PowerShell:

function RemoveAllFilesByExtenstion([string]$targetFolderPath, [string]$ext)
{
...
}

But the invocation has to use space separated args but doesn't require quotes unless there's a PowerShell special character in the string:

RemoveAllFilesByExtenstion C:\Logs\ .log

OTOH, if the function is indicative of what you want to do, this can be done in PowerShell easily:

Get-ChildItem $targetFolderPath -r -filter $ext | Remove-Item