programing

PowerShell에서 서브루틴을 정의하는 방법

lastmoon 2023. 9. 4. 20:35
반응형

PowerShell에서 서브루틴을 정의하는 방법

C#a에서RemoveAllFilesByExtenstion예를 들어 서브루틴은 다음과 같이 디클레어 될 수 있습니다.

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

다음과 같이 사용됩니다.

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

PowerShell 스크립트 파일(ps1)에서 동일한 서명을 가진 서브루틴을 정의하고 호출하려면 어떻게 해야 합니까?

이를 PowerShell로 변환하는 것은 매우 간단합니다.

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

그러나 호출은 공백으로 구분된 인수를 사용해야 하지만 문자열에 PowerShell 특수 문자가 없는 한 따옴표가 필요하지 않습니다.

RemoveAllFilesByExtenstion C:\Logs\ .log

OTOH, 기능이 원하는 작업을 나타내면 PowerShell에서 쉽게 수행할 수 있습니다.

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

PowerShell에는 서브루틴이 없으므로 다음과 같은 기능이 필요합니다.

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

    ... code... 
}

호출하기

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

값을 반환하는 함수가 없는 경우 함수 내부의 명령에서 반환되는 결과를 캡처해야 합니다.

언급URL : https://stackoverflow.com/questions/9262373/how-to-define-a-subroutine-in-powershell

반응형