web-dev-qa-db-fra.com

Comment définir un sous-programme dans PowerShell

En C #, un sous-programme RemoveAllFilesByExtenstion pourrait être, par exemple, décliné comme ceci:

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

et utilisé comme:

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

Comment définir et appeler un sous-programme avec la même signature à partir d'un fichier de script PowerShell (ps1)?

18
Maxim V. Pavlov

Assez simple pour convertir cela en PowerShell:

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

Mais l'invocation doit utiliser des arguments séparés par des espaces mais ne nécessite pas de guillemets sauf s'il y a un caractère spécial PowerShell dans la chaîne:

RemoveAllFilesByExtenstion C:\Logs\ .log

OTOH, si la fonction indique ce que vous voulez faire, cela peut être fait facilement dans PowerShell:

Get-ChildItem $targetFolderPath -r -filter $ext | Remove-Item
30
Keith Hill

Il n'y a pas de sous-programmes dans PowerShell, vous avez besoin d'une fonction:

function RemoveAllFilesByExtenstion    
{
   param(
     [string]$TargetFolderPath,
     [string]$ext
   )  

    ... code... 
}

Pour l'invoquer:

RemoveAllFilesByExtenstion -TargetFolderPath C:\Logs -Ext *.log

Si vous n'avez pas la fonction pour retourner une valeur, assurez-vous de capturer tous les résultats renvoyés par les commandes à l'intérieur de la fonction.

2
Shay Levy