有沒有辦法清除函數內部的返回值,這樣我可以保證返回值是我的意圖?或者可能關閉該功能的行爲?在Powershell函數中清除捕獲的輸出/返回值
在這個例子中,我希望返回值是包含一個ArrayList(「你好」,「世界」)
function GetArray()
{
# $AutoOutputCapture = "Off" ?
$myArray = New-Object System.Collections.ArrayList
$myArray.Add("Hello")
$myArray.Add("World")
# Clear return value before returning exactly what I want?
return $myArray
}
$x = GetArray
$x
但是,輸出包含的添加操作所捕獲的值。
0
1
Hello
World
我覺得這是PowerShell的「特性」,很煩人,因爲它使得它很容易只是通過調用另一個函數,你不知道返回的值打破你的功能。
更新
我知道有辦法,以防止被捕獲(如下面的答案之一描述)的輸出,但需要你知道一個函數實際上返回一個值。如果你調用另一個Powershell函數,它可能會在將來有人改變這個函數返回一個值,然後它會破壞你的代碼。
你是如何處理這個問題的?這是powershell的非常煩人的功能,不允許控制返回值。 – Feru
我剛剛到處使用[void]。我還決定在C#中執行復雜的事情更容易,然後使用PowerShell將它們粘合在一起。 – Mas