我想要一个数组,并从脚本中的不同函数向其中添加元素。下面的示例说明了我可能会误解有关范围的问题。我目前的理解是,如果在函数外部定义了一个数组,然后在函数内部添加了元素,则这些元素应该在函数外部可用。

Function ListRunningServices
{
    $services+= Get-Service | ?{$_.Status -eq "Running"} | sort Name | select Name;
}

$services = @();
ListRunningServices;
$services;

我在这里想念什么?也许我的风格是完全错误的。

最佳答案

功能块内的$services的作用域为该函数。您可以改为执行以下操作:

Function ListRunningServices {
    Get-Service | ?{$_.Status -eq "Running"} | sort Name | select Name
}

$services = ListRunningServices
$services

另外,您可以显式使用global:更改范围:
Function ListRunningServices {
    $global:services = Get-Service | ?{$_.Status -eq "Running"} | sort Name | select Name
}

$services = @()
ListRunningServices
$services

关于arrays - Powershell阵列范围;为什么我的数组为空?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20520980/

10-13 07:45