我的代码中有一个包含3个元素(feature)的数组。目前我已将其声明为$feature = "System","Battery","Signal","Current";
但是将来会有更多的功能。所以我想在我的代码中给出一个选项来添加新功能(实现为GUI)并使用$feature.Add("$new_feature")
命令。
这适用于特定的脚本运行。但是当我再次运行脚本时,这个新添加的功能没有出现。我如何解决这个问题,以便在添加新功能时,它将永远保留在脚本中?
这可能吗?
答案 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