【发布时间】:2015-04-16 04:05:36
【问题描述】:
我有一个脚本如下
[string]$newValue = Get-ConfigurationByType $setting.Value
这一行之后,$newValue 的值为
“http://ST-$($partner.Alias).vardiaforsakring.se/CardPaymentAgreementCallback.aspx”
在循环中,我调用 ExpandString
foreach ($partner in $partners)
{
$partnerSpecificValue =$ExecutionContext.InvokeCommand.ExpandString($newValue)
}
抛出异常
使用“1”参数调用“ExpandString”的异常:“对象引用未设置为对象的实例。”
在 C:\Programs\Drops\Hydra_SE_v1.28\HydraDeploymentFunctions.ps1:342 char:5
+ $partnerSpecificValue = $ExecutionContext.InvokeCommand.ExpandString($newVal ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NullReferenceException
但是当我尝试输入硬编码字符串时,它会毫无例外地返回预期结果
$partnerSpecificValue =$ExecutionContext.InvokeCommand.ExpandString("http://ST-$($partner.Alias).vardiaforsakring.se/CardPaymentAgreementCallback.aspx")
$partnerSpecificValue 的值为
http://ST-secure.vardiaforsakring.se/CardPaymentAgreementCallback.aspx
有人知道解决此错误的解决方法吗?非常感谢。我在 Windows Server 2012 R2 上运行 PowerShell v4.0。
【问题讨论】:
-
您使用什么模块?那是“spockframework”吗?也许在问题中添加一些细节。你得到的错误只是告诉你 $newValue 是空的。
-
您好 Jan,我只是使用记事本编写了一个脚本,然后通过 PowerShell 运行该脚本。我不知道什么是“spockframework”
-
硬编码时,它可以工作,因为您使用双引号 (") 字符串,它会在传递给 ExpandString 之前进行插值。如果您使用单引号 (') 传递字符串 -你会看到同样的 NullReferenceException