web-dev-qa-db-ja.com

PowerShellでサブルーチンを定義する方法

C#では、RemoveAllFilesByExtenstionサブルーチンは、たとえば次のようにしてクリアできます。

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

のように使用されます:

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

PowerShellスクリプトファイル(ps1)から同じ署名を持つサブルーチンを定義して呼び出すにはどうすればよいですか?

18
Maxim V. Pavlov

これをPowerShellに変換するのは非常に簡単です。

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

ただし、呼び出しではスペースで区切られた引数を使用する必要がありますが、文字列にPowerShellの特殊文字がない限り、引用符は必要ありません。

RemoveAllFilesByExtenstion C:\Logs\ .log

OTOH、関数が実行したいことを示している場合、これはPowerShellで簡単に実行できます。

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

PowerShellにはサブルーチンはありません。関数が必要です。

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

    ... code... 
}

それを呼び出すには:

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

関数が値を返さない場合は、関数内のコマンドから返された結果をキャプチャしてください。

2
Shay Levy