使用PowerShell附加数组

时间:2016-06-28 14:40:25

标签: powershell

我的代码中有一个包含3个元素(feature)的数组。目前我已将其声明为$feature = "System","Battery","Signal","Current"; 但是将来会有更多的功能。所以我想在我的代码中给出一个选项来添加新功能(实现为GUI)并使用$feature.Add("$new_feature")命令。

这适用于特定的脚本运行。但是当我再次运行脚本时,这个新添加的功能没有出现。我如何解决这个问题,以便在添加新功能时,它将永远保留在脚本中?

这可能吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是将数组数据存储在文件中:

# read array from file
$feature = @(Get-Content 'features.txt')

# write array back to file
$feature | Set-Content 'features.txt'

您可以使用$PSScriptRoot获取脚本文件的位置(这样您就可以将数据文件存储在同一文件夹中)。在PowerShell v3之前,使用以下命令确定包含脚本的文件夹:

$PSScriptRoot = Split-Path $MyInvocation.MyCommand.Path -Parent

另一种选择是将数据存储在注册表中(更容易找到数据,但处理起来要复杂一些):

$key  = 'HKCU:\some\key'
$name = 'features'

# read array from registry
$feature = @(Get-ItemProperty -Path $key -Name $name -EA SilentlyContinue | Select-Object -Expand $name)

# create registry value if it didn't exist before
if (-not $?) {
  New-ItemProperty -Path $key -Name $name -Type MultiString -Value @()
}

# write array back to registry
Set-ItemProperty -Path $key -Name $name -Value $feature