我有一个 powershell 脚本,其中包含以下代码...
$appdir = Split-Path -Path $MyInvocation.MyCommand.Path
$xfrdir = $appdir + "\xfr\"
$cfgFile = "ofx_config.cfg"
$cfgPath = $appdir + "\" + $cfgFile
$configData = New-Object System.Collections.ArrayList
# --- some other code here...
function Load-Config ()
{
if (test-path ($cfgPath))
{
$configData = Import-Clixml -path "$cfgPath"
}
}
# ---some other code here
load-config
当我在 ps ISE 中运行此脚本时,load-config 运行,因为它位于脚本的末尾(我用断点验证了这一点),但 $configData 变量仍然为空。
但是,如果我立即将该行复制并$configData = Import-Clixml -path "$cfgPath"
传递到 powershell 命令行并运行它,那么 $configData 就会加载数据。有没有人有任何想法可能会发生什么?
编辑
我认为你所说的是 $configData in$configData = Import-Clixml -path "$cfgPath"
由于范围规则而被视为一个完整的单独变量(并且是函数的本地变量)。我认为它更像 ac# 类,因此会分配给同名的脚本级变量。
我很喜欢 powershell,但动态类型确实让事情变得更棘手。
编辑 2
两个答案都很有见地。在这种情况下,我通常会向声誉最低的人提供答案。无论如何,我确实做了安迪的第二个例子。
赛斯