2012-02-13 35 views
15

Trong C# một chương trình con RemoveAllFilesByExtenstion có thể, ví dụ, decleard như thế này:Làm thế nào để xác định một chương trình con trong PowerShell

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

và sử dụng như:

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

Làm thế nào tôi có thể defne và gọi một chương trình con có cùng chữ ký từ tệp tập lệnh PowerShell (ps1)?

+0

Xin lỗi để nitpick trên một bài cũ nhưng chỉ cho rõ ràng: Các C# Ngôn ngữ tham khảo không sử dụng thuật ngữ 'chương trình con'. – RonaldMunodawafa

Trả lời

25

Khá đơn giản để chuyển đổi này để PowerShell:

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

Nhưng gọi có sử dụng không gian tách args nhưng không yêu cầu báo giá, trừ khi có một nhân vật đặc biệt PowerShell trong chuỗi:

RemoveAllFilesByExtenstion C:\Logs\ .log 

OTOH, nếu chức năng là chỉ dẫn của những gì bạn muốn làm, điều này có thể được thực hiện trong PowerShell dễ dàng:

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

Keith, cảm ơn "cookies" cùng với câu trả lời. =) –

1

Hiện tại không có chương trình con trong PowerShell, bạn cần có một chức năng:

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

    ... code... 
} 

Để gọi nó:

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

Nếu bạn làm không phải là chức năng để trả lại bất kỳ giá trị chắc chắn rằng bạn nắm bắt được bất kỳ kết quả trả về từ các lệnh bên trong hàm.

+2

Cảm ơn. Thuật ngữ phụ thường trình là phần "mã có thể tái sử dụng" "có thể tái sử dụng" nhiều hơn, do đó thuật ngữ "hàm" là một tập con của "chương trình con" theo ý kiến ​​của tôi. –

+2

Trong VBScript có thực sự là một sự phân biệt giữa một chương trình con (keyword: sub) và một hàm (keyword: function). Các cựu trả về không có giá trị và sau này không. Những người đi PowerShell từ VBS có thể hơi bối rối rằng PowerShell chỉ có các chức năng mà có thể quặng không thể trả về một giá trị. –

Các vấn đề liên quan