String 带变量的字符串展开

String 带变量的字符串展开,string,powershell,expansion,String,Powershell,Expansion,我有一个配置文件,其中包含脚本中使用的字符串。使用以下语法通过C#类读取配置文件: $final = $PropMgr.GetValue($section, $property) $final = $ExecutionContext.InvokeCommand.ExpandString($final) 这将从配置文件返回字符串。之后,返回的字符串将被扩展,因为它可能包含需要扩展的对象 除了一件事,一切都很好。配置文件中的一个字符串如下所示: 找到要在配置文件中执行的$($scripts.Len

我有一个配置文件,其中包含脚本中使用的字符串。使用以下语法通过C#类读取配置文件:

$final = $PropMgr.GetValue($section, $property)
$final = $ExecutionContext.InvokeCommand.ExpandString($final)
这将从配置文件返回字符串。之后,返回的字符串将被扩展,因为它可能包含需要扩展的对象

除了一件事,一切都很好。配置文件中的一个字符串如下所示:

找到要在配置文件中执行的$($scripts.Length)脚本
$scripts
是数组,因此展开的字符串应如下所示:

在配置文件中找到6个要执行的脚本
但使用我的代码avove,我收到一个异常:

使用“1”参数调用“ExpandString”时出现异常:“对象引用未设置为对象的实例。”

如果我调试脚本并在命令行中执行此代码:

$ExecutionContext.InvokeCommand.ExpandString("Found $($scripts.Length) scripts to execute in the config file")
一切正常,但使用
$final
变量而不是字符串本身,我再次收到异常


我需要做什么才能实现我想要的目标?

你能给我们看看配置文件吗?似乎
$PropMgr.GetValue($section,$property)
没有返回任何内容您是否检查了
$final
的值/类型?是的$final肯定是用正确的字符串值填充的。我检查了好几次