2012-02-13 15 views
15

En C# una subrutina RemoveAllFilesByExtenstion podría ser, por ejemplo, decleard así:Cómo definir una subrutina en PowerShell

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

y se utiliza como:

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

Cómo puedo Defne y llamar a un subrutina con la misma firma de un archivo de script de PowerShell (ps1)?

+0

Perdón por nitpick en una publicación anterior, pero solo por claridad: La referencia de lenguaje C# no utiliza el término 'subrutina'. – RonaldMunodawafa

Respuesta

25

bastante simple de convertir esto en PowerShell:

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

Pero la invocación tiene que utilizar separadas por espacios argumentos, pero no requiere cotizaciones a menos que haya un carácter especial PowerShell en la cadena:

RemoveAllFilesByExtenstion C:\Logs\ .log 

OTOH, si la función es indicativa de lo que quiere hacer, esto se puede hacer fácilmente en PowerShell:

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

Keith, gracias por las "cookies" junto con una respuesta. =) –

1

No hay subrutinas en PowerShell, se necesita una función:

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

    ... code... 
} 

para invocarlo:

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

Si no lo hace la función de devolver cualquier valor que asegúrese de capturar ningún resultado regresaron de los comandos dentro de la función.

+2

Gracias. El término sub-rutina es una pieza de código "reutilizable", por lo que el término "función" es un subconjunto de "subrutina" en mi opinión. –

+2

En VBscript hay una distinción entre una subrutina (palabra clave: sub) y una función (palabra clave: función). El primero no devuelve ningún valor y el segundo lo hace. Las personas que vayan a PowerShell de VBS pueden confundirse un poco al respecto de que PowerShell solo tiene funciones que pueden no generar un valor. –

Cuestiones relacionadas