gpt4 book ai didi

arrays - Powershell 阵列范围;为什么我的数组是空的?

转载 作者:行者123 更新时间:2023-12-04 21:52:29 27 4
gpt4 key购买 nike

我想要一个数组并从我的脚本中的不同函数向它添加元素。我下面的例子说明了我可能对范围有误解的地方。我目前的理解是,如果在函数外部定义了一个数组,然后在函数内部添加元素,那么这些元素应该在函数外部可用。

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

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

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

最佳答案

您可以使用全局变量来解决这个问题,但使用全局变量通常被认为是不好的做法。如果您使用通用集合类型(如 arraylist)而不是数组,那么您有一个 add() 方法,该方法将更新父作用域中的集合,而无需在函数中显式地定义它的作用域:

Function ListRunningServices
{
Get-Service | ?{$_.Status -eq "Running"} | sort Name | select Name |
ForEach-Object {$services.add($_)}
}

$services = New-Object collections.arraylist
ListRunningServices
$services

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com