У меня есть следующий код
function rte($hosts) {
$conn = [System.Collections.ArrayList]@($hosts)
$result = [System.Collections.ArrayList]@()
foreach($co in $conn)
{
$check = Test-Connection $co -Count 3 -ErrorAction SilentlyContinue
$zugriffzeit = $check | select ResponseTime | Measure-Object ResponseTime -Average
$avg = [system.math]::Round($zugriffzeit.Average)
if($check -eq $null)
{
$pcre = Write-Output $co
$pire = Write-Output 'False'
$zure = 'Null'
}
else
{
$pcre = Write-Output $co
$pire = Write-Output 'True'
$zure = Write-Output "$avg ms"
$zure = $zure.Replace(' ','')
}
#"$pcre $pire $zure"
#[void] avoid the numeric position in the array where new record is stored.
[void]$result.Add([PSCustomObject] @{PCName=$pcre; PingResult=$pire; Zugriffszeit=$zure} )
# without this line there will be no column as we need.
#$result | ForEach {[PSCustomObject]$_} | Format-Table -AutoSize
}return $result
**$result.Clear()**
}
Я хочу сделать это после выполнения l oop, я хочу удалить содержимое массива $result
, что я делаю с $result.clear()
. Однако это не сработает, если я вызову эту функцию в другой:
function mainfun($hosts) {
#$hosts = [System.Collections.ArrayList]@()
while($true){
rte $hosts
Start-Sleep -Seconds 5
}
}
Я хочу иметь возможность вызывать функцию mainfun
в PowerShell и хочу иметь массив $ result для удаления содержимое каждый раз после того, как он запускается один раз Как это сделать?