如何在PowerShell中定义子例程

时间:2012-02-13 14:42:34

标签: powershell subroutine

在C#中,RemoveAllFilesByExtenstion子程序可以是,例如,如下所示:

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

并使用如下:

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

如何使用PowerShell脚本文件(ps1)中的相同签名来定义和调用子例程?

2 个答案:

答案 0 :(得分:29)

将此转换为PowerShell非常简单:

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

但是调用必须使用空格分隔的args但不需要引号,除非字符串中有PowerShell特殊字符:

RemoveAllFilesByExtenstion C:\Logs\ .log

OTOH,如果该功能表明您想要做什么,可以在PowerShell中轻松完成:

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

答案 1 :(得分:2)

PowerShell中没有子程序,您需要一个函数:

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

    ... code... 
}

要调用它:

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

如果您没有返回任何值的函数,请确保捕获函数内部命令返回的任何结果。